{"cells":[{"attachments":{},"cell_type":"markdown","metadata":{},"source":["### DeBERTaV3模型\n","#### 一、导入相关库，设置超参数和随机种子"]},{"cell_type":"code","execution_count":57,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:45:04.534825Z","iopub.status.busy":"2022-12-14T02:45:04.534466Z","iopub.status.idle":"2022-12-14T02:45:04.544245Z","shell.execute_reply":"2022-12-14T02:45:04.543003Z","shell.execute_reply.started":"2022-12-14T02:45:04.534793Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["transformers.__version__: 4.20.1\n","tokenizers.__version__: 0.12.1\n"]}],"source":["import os,gc,re,ast,sys,copy,json,time,datetime,math,string,pickle,random,joblib,itertools\n","\n","from distutils.util import strtobool\n","import warnings\n","warnings.filterwarnings('ignore')\n","\n","import scipy as sp\n","import numpy as np\n","import pandas as pd\n","import matplotlib.pyplot as plt\n","from tqdm.auto import tqdm\n","from sklearn.metrics import mean_squared_error\n","from sklearn.model_selection import StratifiedKFold, GroupKFold, KFold,train_test_split\n","\n","import torch\n","import torch.nn as nn\n","import torch.nn.functional as F\n","from torch.nn import Parameter\n","from torch.optim import Adam, SGD, AdamW\n","from torch.utils.data import DataLoader, Dataset\n","from torch.utils.checkpoint import checkpoint\n","\n","import transformers,tokenizers\n","print(f'transformers.__version__: {transformers.__version__}')\n","print(f'tokenizers.__version__: {tokenizers.__version__}')\n","from transformers import AutoTokenizer, AutoModel, AutoConfig\n","from transformers import get_linear_schedule_with_warmup, get_cosine_schedule_with_warmup\n","os.environ['TOKENIZERS_PARALLELISM']='true'"]},{"cell_type":"markdown","metadata":{},"source":["定义超参数和随机种子"]},{"cell_type":"code","execution_count":58,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:45:34.846548Z","iopub.status.busy":"2022-12-14T02:45:34.845528Z","iopub.status.idle":"2022-12-14T02:45:34.860531Z","shell.execute_reply":"2022-12-14T02:45:34.859586Z","shell.execute_reply.started":"2022-12-14T02:45:34.846512Z"},"trusted":true},"outputs":[{"data":{"text/plain":["'./microsoft-deberta-v3-base/'"]},"execution_count":58,"metadata":{},"output_type":"execute_result"}],"source":["from transformers import AutoModel\n","model = AutoModel.from_pretrained(\"microsoft/deberta-v3-base\")\n","class CFG:\n","    model_name = \"microsoft/deberta-v3-base\"\n","    batch_size ,n_targets,num_workers = 8,6,4\n","    target_cols = ['cohesion', 'syntax', 'vocabulary', 'phraseology', 'grammar', 'conventions']\n","    epochs,print_freq = 5,20 # 训练时每隔20step打印一次    \n","    save_all_models=False # 是否每个epoch都保存数据\n","    gradient_checkpointing = True\n","    \n","    loss_func = 'SmoothL1' # 'SmoothL1', 'RMSE'\n","    pooling = 'attention' # mean, max, min, attention, weightedlayer\n","    gradient_checkpointing = True\n","    gradient_accumulation_steps = 1 # 是否使用梯度累积更新\n","    max_grad_norm = 1000 #梯度裁剪\n","    apex = True # 是否进行自动混合精度训练 \n","    \n","    # 启用llrd\n","    layerwise_lr,layerwise_lr_decay = 5e-5,0.9\n","    layerwise_weight_decay = 0.01\n","    layerwise_adam_epsilon = 1e-6\n","    layerwise_use_bertadam = False\n","    \n","    scheduler = 'cosine'\n","    num_cycles ,num_warmup_steps= 0.5,0\n","    encoder_lr,decoder_lr,min_lr  = 2e-5,2e-5 ,1e-6\n","    max_len = 512\n","    weight_decay = 0.01\n","    \n","    fgm = True # 是否使用fgm对抗网络攻击\n","    wandb=False\n","    adv_lr,adv_eps,eps,betas = 1,0.2,1e-6,(0.9, 0.999)\n","    unscale =True\n","    \n","    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n","    \n","    seed=42\n","    n_fold=4\n","    trn_fold=list(range(n_fold))\n","    debug=False # debug表示只使用少量样本跑代码，且n_fold=2，epoch=2\n","    \n","    OUTPUT_DIR = f\"./{model_name.replace('/', '-')}/\"\n","    train_file = '../train.csv'\n","    test_file = '../test.csv'\n","    submission_file = '../sample_submission.csv'\n","    \n","if not os.path.exists(CFG.OUTPUT_DIR):\n","    os.makedirs(CFG.OUTPUT_DIR)\n","    \n","CFG.OUTPUT_DIR"]},{"cell_type":"code","execution_count":59,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:45:41.832782Z","iopub.status.busy":"2022-12-14T02:45:41.832405Z","iopub.status.idle":"2022-12-14T02:45:41.839856Z","shell.execute_reply":"2022-12-14T02:45:41.838419Z","shell.execute_reply.started":"2022-12-14T02:45:41.832749Z"},"trusted":true},"outputs":[],"source":["# 设置随机种子 固定结果\n","def set_seeds(seed):\n","    random.seed(seed)\n","    np.random.seed(seed)  # 保证后续使用random函数时，产生固定的随机数\n","    torch.manual_seed(seed)  # 固定随机种子（CPU）\n","    if torch.cuda.is_available():  # 固定随机种子（GPU)\n","        torch.cuda.manual_seed(seed)  # 为当前GPU设置\n","        torch.cuda.manual_seed_all(seed)  # 为所有GPU设置\n","    \n","    torch.backends.cudnn.deterministic = True  # 固定网络结构\n","    \n","set_seeds(CFG.seed)"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 二、 数据预处理\n","2.1 定义前处理函数，tokenizer文本"]},{"cell_type":"code","execution_count":61,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:46:04.621652Z","iopub.status.busy":"2022-12-14T02:46:04.621273Z","iopub.status.idle":"2022-12-14T02:46:05.740031Z","shell.execute_reply":"2022-12-14T02:46:05.738918Z","shell.execute_reply.started":"2022-12-14T02:46:04.621613Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n","Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"]},{"data":{"text/plain":["{'input_ids': array([[   1,  335,  266, ...,  265,  262,    2],\n","       [   1,  771,  274, ...,    0,    0,    0],\n","       [   1, 2651, 9805, ...,    0,    0,    0]]), 'token_type_ids': array([[0, 0, 0, ..., 0, 0, 0],\n","       [0, 0, 0, ..., 0, 0, 0],\n","       [0, 0, 0, ..., 0, 0, 0]]), 'attention_mask': array([[1, 1, 1, ..., 1, 1, 1],\n","       [1, 1, 1, ..., 0, 0, 0],\n","       [1, 1, 1, ..., 0, 0, 0]])}"]},"execution_count":61,"metadata":{},"output_type":"execute_result"}],"source":["from datasets import Dataset\n","def preprocess(df,tokenizer,types=True):\n","    if types:\n","        labels = np.array(df[[\"cohesion\", \"syntax\", \"vocabulary\", \"phraseology\", \"grammar\", \"conventions\"]])\n","    else:\n","        labels=df[\"labels\"]\n","    text=list(df['full_text'].iloc[:])\n","    encoding=tokenizer(text,truncation=True,padding=\"max_length\",\n","                        max_length=CFG.max_len,return_tensors=\"np\")#训练集中划分的训练集\n","    return encoding,labels\n","    \n","\n","df=pd.read_csv(CFG.train_file)\n","test_df = pd.read_csv(CFG.test_file)\n","test_df['labels']=None\n","test_df['labels']=test_df['labels'].apply(lambda x:[0,0,0,0,0,0])\n","\n","tokenizer = AutoTokenizer.from_pretrained(model)\n","test_encoding,test_label=preprocess(test_df,tokenizer,False)\n","test_encoding"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["2.2 定义Dataset，并将数据装入DataLoader"]},{"cell_type":"code","execution_count":63,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:46:27.614874Z","iopub.status.busy":"2022-12-14T02:46:27.613862Z","iopub.status.idle":"2022-12-14T02:46:27.625544Z","shell.execute_reply":"2022-12-14T02:46:27.624561Z","shell.execute_reply.started":"2022-12-14T02:46:27.614805Z"},"trusted":true},"outputs":[],"source":["from torch.utils.data import Dataset, DataLoader,TensorDataset\n","class MyDataset(Dataset):\n","    def __init__(self,encoding,label):\n","        self.inputs=encoding\n","        self.label=label\n","    # 读取单个样本\n","    def __getitem__(self,idx):\n","        item={key:torch.tensor(val[idx],dtype = torch.long) for key,val in self.inputs.items()}\n","        label=torch.tensor(self.label[idx],dtype=torch.float)\n","        return item,label\n","    def __len__(self):\n","        return len(self.label)\n","def collate(inputs): \n","    mask_len = int(inputs[\"attention_mask\"].sum(axis=1).max())\n","    for k, v in inputs.items():\n","        inputs[k] = inputs[k][:,:mask_len]\n","    return inputs\n","test_dataset=MyDataset(test_encoding,test_label)\n","test_loader=DataLoader(test_dataset,batch_size=CFG.batch_size,\n","                       num_workers=CFG.num_workers,shuffle=False)"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 三、辅助函数"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["3.1 定义损失函数、评价指标、logger"]},{"cell_type":"code","execution_count":64,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:46:38.580794Z","iopub.status.busy":"2022-12-14T02:46:38.580332Z","iopub.status.idle":"2022-12-14T02:46:38.609283Z","shell.execute_reply":"2022-12-14T02:46:38.608085Z","shell.execute_reply.started":"2022-12-14T02:46:38.580753Z"},"trusted":true},"outputs":[{"data":{"text/plain":["<_Logger __main__ (INFO)>"]},"execution_count":64,"metadata":{},"output_type":"execute_result"}],"source":["class RMSELoss(nn.Module):\n","    def __init__(self, reduction = 'mean', eps = 1e-9):\n","        super().__init__()\n","        self.mse = nn.MSELoss(reduction = 'none')\n","        self.reduction = reduction\n","        self.eps = eps\n","        \n","    def forward(self, y_pred, y_true):\n","        loss = torch.sqrt(self.mse(y_pred, y_true) + self.eps)\n","        if self.reduction == 'none':\n","            loss = loss\n","        elif self.reduction == 'sum':\n","            loss = loss.sum()\n","        elif self.reduction == 'mean':\n","            loss = loss.mean()\n","        return loss  \n","\n","def MCRMSE(y_trues, y_preds):\n","    scores = []\n","    idxes = y_trues.shape[1]\n","    for i in range(idxes):\n","        y_true = y_trues[:, i]\n","        y_pred = y_preds[:, i]\n","        score = mean_squared_error(y_true, y_pred, squared = False)\n","        scores.append(score)\n","    mcrmse_score = np.mean(scores)\n","    return mcrmse_score, scores\n","   \n","\n","class AverageMeter(object):\n","    def __init__(self):\n","        self.reset()\n","        \n","    def reset(self):\n","        self.val = 0\n","        self.avg = 0\n","        self.sum = 0\n","        self.count = 0\n","        \n","    def update(self, val, n = 1):\n","        self.val = val\n","        self.sum += val * n\n","        self.count += n\n","        self.avg = self.sum / self.count\n","\n","def asMinutes(s):\n","    m = math.floor(s / 60)\n","    s -= m * 60\n","    return f'{int(m)}m {int(s)}s'\n","\n","def timeSince(since, percent):\n","    now = time.time()\n","    s = now - since\n","    es = s / (percent)\n","    rs = es - s\n","    return f'{str(asMinutes(s))} (remain {str(asMinutes(rs))})' \n","\n","def get_logger(filename=CFG.OUTPUT_DIR+'train'):\n","    from logging import getLogger, INFO, StreamHandler, FileHandler, Formatter\n","    logger = getLogger(__name__)\n","    logger.setLevel(INFO)\n","    handler1 = StreamHandler()\n","    handler1.setFormatter(Formatter(\"%(message)s\"))\n","    handler2 = FileHandler(filename=f\"{filename}.log\")\n","    handler2.setFormatter(Formatter(\"%(message)s\"))\n","    logger.addHandler(handler1)\n","    logger.addHandler(handler2)\n","    return logger\n","\n","\n","if CFG.loss_func == 'SmoothL1':\n","    criterion = nn.SmoothL1Loss(reduction='mean')\n","elif CFG.loss_func == 'RMSE':\n","    criterion = RMSELoss(reduction='mean')\n","    \n","logger= get_logger()\n","logger"]},{"cell_type":"markdown","metadata":{},"source":["### 3.2 Fast Gradient Method (FGM)\n","\n","[Reference](https://www.kaggle.com/c/tweet-sentiment-extraction/discussion/143764)"]},{"cell_type":"code","execution_count":65,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:46:45.922438Z","iopub.status.busy":"2022-12-14T02:46:45.921749Z","iopub.status.idle":"2022-12-14T02:46:45.930085Z","shell.execute_reply":"2022-12-14T02:46:45.928985Z","shell.execute_reply.started":"2022-12-14T02:46:45.922403Z"},"trusted":true},"outputs":[],"source":["class FGM():\n","    def __init__(self, model):\n","        self.model = model\n","        self.backup = {}\n","\n","    def attack(self, epsilon = 1., emb_name = 'word_embeddings'):\n","        for name, param in self.model.named_parameters():\n","            if param.requires_grad and emb_name in name:\n","                self.backup[name] = param.data.clone()\n","                norm = torch.norm(param.grad)\n","                if norm != 0:\n","                    r_at = epsilon * param.grad / norm\n","                    param.data.add_(r_at)\n","\n","    def restore(self, emb_name = 'word_embeddings'):\n","        for name, param in self.model.named_parameters():\n","            if param.requires_grad and emb_name in name:\n","                assert name in self.backup\n","                param.data = self.backup[name]\n","            self.backup = {}"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["3.3 交叉验证"]},{"cell_type":"code","execution_count":66,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:46:52.796951Z","iopub.status.busy":"2022-12-14T02:46:52.796563Z","iopub.status.idle":"2022-12-14T02:46:52.930170Z","shell.execute_reply":"2022-12-14T02:46:52.929120Z","shell.execute_reply.started":"2022-12-14T02:46:52.796919Z"},"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>text_id</th>\n","      <th>full_text</th>\n","      <th>cohesion</th>\n","      <th>syntax</th>\n","      <th>vocabulary</th>\n","      <th>phraseology</th>\n","      <th>grammar</th>\n","      <th>conventions</th>\n","      <th>fold</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0016926B079C</td>\n","      <td>I think that students would benefit from learn...</td>\n","      <td>3.5</td>\n","      <td>3.5</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>4.0</td>\n","      <td>3.0</td>\n","      <td>2</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0022683E9EA5</td>\n","      <td>When a problem is a change you have to let it ...</td>\n","      <td>2.5</td>\n","      <td>2.5</td>\n","      <td>3.0</td>\n","      <td>2.0</td>\n","      <td>2.0</td>\n","      <td>2.5</td>\n","      <td>0</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>00299B378633</td>\n","      <td>Dear, Principal\\n\\nIf u change the school poli...</td>\n","      <td>3.0</td>\n","      <td>3.5</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>2.5</td>\n","      <td>1</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["        text_id                                          full_text  cohesion  \\\n","0  0016926B079C  I think that students would benefit from learn...       3.5   \n","1  0022683E9EA5  When a problem is a change you have to let it ...       2.5   \n","2  00299B378633  Dear, Principal\\n\\nIf u change the school poli...       3.0   \n","\n","   syntax  vocabulary  phraseology  grammar  conventions  fold  \n","0     3.5         3.0          3.0      4.0          3.0     2  \n","1     2.5         3.0          2.0      2.0          2.5     0  \n","2     3.5         3.0          3.0      3.0          2.5     1  "]},"execution_count":66,"metadata":{},"output_type":"execute_result"}],"source":["sys.path.append('../input/iterativestratification')\n","from iterstrat.ml_stratifiers import MultilabelStratifiedKFold\n","Fold = MultilabelStratifiedKFold(n_splits = CFG.n_fold, shuffle = True, random_state = CFG.seed)\n","for n, (train_index, val_index) in enumerate(Fold.split(df, df[CFG.target_cols])):\n","    df.loc[val_index, 'fold'] = int(n)\n","df['fold'] = df['fold'].astype(int)\n","\n","if CFG.debug:\n","    CFG.epochs = 2\n","    CFG.trn_fold = [0,1]\n","    df = df.sample(n = 100, random_state = CFG.seed).reset_index(drop=True)\n","df.head(3)"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 四、池化"]},{"cell_type":"code","execution_count":67,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:05.237474Z","iopub.status.busy":"2022-12-14T02:47:05.236892Z","iopub.status.idle":"2022-12-14T02:47:05.263021Z","shell.execute_reply":"2022-12-14T02:47:05.261698Z","shell.execute_reply.started":"2022-12-14T02:47:05.237432Z"},"trusted":true},"outputs":[],"source":["class MeanPooling(nn.Module):\n","    def __init__(self):\n","        super(MeanPooling, self).__init__()\n","        \n","    def forward(self, last_hidden_state, attention_mask):\n","        input_mask_expanded = attention_mask.unsqueeze(-1).expand(last_hidden_state.size()).float()\n","        sum_embeddings = torch.sum(last_hidden_state * input_mask_expanded, 1)\n","        sum_mask = input_mask_expanded.sum(1)\n","        sum_mask = torch.clamp(sum_mask, min = 1e-9)\n","        mean_embeddings = sum_embeddings/sum_mask\n","        return mean_embeddings\n","\n","class MaxPooling(nn.Module):\n","    def __init__(self):\n","        super(MaxPooling, self).__init__()\n","        \n","    def forward(self, last_hidden_state, attention_mask):\n","        input_mask_expanded = attention_mask.unsqueeze(-1).expand(last_hidden_state.size()).float()\n","        embeddings = last_hidden_state.clone()\n","        embeddings[input_mask_expanded == 0] = -1e4\n","        max_embeddings, _ = torch.max(embeddings, dim = 1)\n","        return max_embeddings\n","    \n","class MinPooling(nn.Module):\n","    def __init__(self):\n","        super(MinPooling, self).__init__()\n","        \n","    def forward(self, last_hidden_state, attention_mask):\n","        input_mask_expanded = attention_mask.unsqueeze(-1).expand(last_hidden_state.size()).float()\n","        embeddings = last_hidden_state.clone()\n","        embeddings[input_mask_expanded == 0] = 1e-4\n","        min_embeddings, _ = torch.min(embeddings, dim = 1)\n","        return min_embeddings\n","\n","#Attention pooling\n","class AttentionPooling(nn.Module):\n","    def __init__(self, in_dim):\n","        super().__init__()\n","        self.attention = nn.Sequential(\n","        nn.Linear(in_dim, in_dim),\n","        nn.LayerNorm(in_dim),\n","        nn.GELU(),\n","        nn.Linear(in_dim, 1),\n","        )\n","\n","    def forward(self, last_hidden_state, attention_mask):\n","        w = self.attention(last_hidden_state).float()\n","        w[attention_mask==0]=float('-inf')\n","        w = torch.softmax(w,1)\n","        attention_embeddings = torch.sum(w * last_hidden_state, dim=1)\n","        return attention_embeddings\n","\n","#There may be a bug in my implementation because it does not work well.\n","class WeightedLayerPooling(nn.Module):\n","    def __init__(self, num_hidden_layers, layer_start: int = 4, layer_weights = None):\n","        super(WeightedLayerPooling, self).__init__()\n","        self.layer_start = layer_start\n","        self.num_hidden_layers = num_hidden_layers\n","        self.layer_weights = layer_weights if layer_weights is not None \\\n","            else nn.Parameter(\n","                torch.tensor([1] * (num_hidden_layers+1 - layer_start), dtype=torch.float)\n","            )\n","\n","    def forward(self, ft_all_layers):\n","        all_layer_embedding = torch.stack(ft_all_layers)\n","        all_layer_embedding = all_layer_embedding[self.layer_start:, :, :, :]\n","\n","        weight_factor = self.layer_weights.unsqueeze(-1).unsqueeze(-1).unsqueeze(-1).expand(all_layer_embedding.size())\n","        weighted_average = (weight_factor*all_layer_embedding).sum(dim=0) / self.layer_weights.sum()\n","\n","        return weighted_average"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 五、模型"]},{"cell_type":"code","execution_count":68,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:15.518509Z","iopub.status.busy":"2022-12-14T02:47:15.518025Z","iopub.status.idle":"2022-12-14T02:47:15.533141Z","shell.execute_reply":"2022-12-14T02:47:15.532121Z","shell.execute_reply.started":"2022-12-14T02:47:15.518467Z"},"trusted":true},"outputs":[],"source":["class FB3Model(nn.Module):\n","    def __init__(self, CFG, config_path = None,pretrained=False):\n","        super().__init__()\n","        self.CFG = CFG\n","        # 设置模型的config文件，根据此配置文件读取预训练模型\n","        if config_path is None:\n","            self.config = AutoConfig.from_pretrained(model, ouput_hidden_states = True)\n","            self.config.hidden_dropout = 0.\n","            self.config.hidden_dropout_prob = 0.\n","            self.config.attention_dropout = 0.\n","            self.config.attention_probs_dropout_prob = 0.            \n","            \n","        else:\n","            self.config = torch.load(config_path)   \n","        #logger.info(self.config)\n","        \n","        \n","        if pretrained:\n","            self.model = AutoModel.from_pretrained(model, config=self.config)\n","        else:\n","            self.model = AutoModel.from_config(self.config)\n","       \n","            \n","        if CFG.pooling == 'mean':\n","            self.pool = MeanPooling()\n","        elif CFG.pooling == 'max':\n","            self.pool = MaxPooling()\n","        elif CFG.pooling == 'min':\n","            self.pool = MinPooling()\n","        elif CFG.pooling == 'attention':\n","            self.pool = AttentionPooling(self.config.hidden_size)\n","        elif CFG.pooling == 'weightedlayer':\n","            self.pool = WeightedLayerPooling(self.config.num_hidden_layers, layer_start = CFG.layer_start, layer_weights = None)        \n","        # 用一个全连接层得到预测的6类输出\n","        self.fc = nn.Linear(self.config.hidden_size, self.CFG.n_targets)\n","   \n","   # 根据池化方法选择输出\n","    def feature(self,inputs):\n","        outputs = self.model(**inputs)\n","        if CFG.pooling != 'weightedlayer':\n","            last_hidden_states = outputs[0]\n","            feature = self.pool(last_hidden_states,inputs['attention_mask'])\n","        else:\n","            all_layer_embeddings = outputs[1]\n","            feature = self.pool(all_layer_embeddings)\n","            \n","        return feature\n","    \n","    def forward(self,inputs):\n","        feature = self.feature(inputs)\n","        outout = self.fc(feature)\n","        return outout     "]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 六、定义训练和验证函数"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["6.1 定义优化器调度器和损失函数"]},{"cell_type":"code","execution_count":69,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:25.761576Z","iopub.status.busy":"2022-12-14T02:47:25.760906Z","iopub.status.idle":"2022-12-14T02:47:25.771816Z","shell.execute_reply":"2022-12-14T02:47:25.770800Z","shell.execute_reply.started":"2022-12-14T02:47:25.761541Z"},"trusted":true},"outputs":[],"source":["#LLDR\n","def get_optimizer_grouped_parameters(model, layerwise_lr,layerwise_weight_decay,layerwise_lr_decay):\n","\n","    no_decay = [\"bias\", \"LayerNorm.weight\"]\n","    # initialize lr for task specific layer\n","    optimizer_grouped_parameters = [{\"params\": [p for n, p in model.named_parameters() if \"model\" not in n],\n","                                     \"weight_decay\": 0.0,\"lr\": layerwise_lr,},]\n","    # initialize lrs for every layer\n","    layers = [model.model.embeddings] + list(model.model.encoder.layer)\n","    layers.reverse()\n","    lr = layerwise_lr\n","    for layer in layers:\n","        optimizer_grouped_parameters += [{\"params\": [p for n, p in layer.named_parameters() if not any(nd in n for nd in no_decay)],\n","                                          \"weight_decay\": layerwise_weight_decay,\"lr\": lr,},\n","                                         {\"params\": [p for n, p in layer.named_parameters() if any(nd in n for nd in no_decay)],\n","                                          \"weight_decay\": 0.0,\"lr\": lr,},]\n","        lr *= layerwise_lr_decay\n","    return optimizer_grouped_parameters\n","                \n","    \n","# 选择使用线性学习率衰减或者cos学习率衰减\n","def get_scheduler(cfg, optimizer, num_train_steps):\n","    if cfg.scheduler == 'linear':\n","        scheduler = get_linear_schedule_with_warmup(\n","            optimizer, \n","            num_warmup_steps = cfg.num_warmup_steps, \n","            num_training_steps = num_train_steps\n","        )\n","    elif cfg.scheduler == 'cosine':\n","        scheduler = get_cosine_schedule_with_warmup(\n","            optimizer, \n","            num_warmup_steps = cfg.num_warmup_steps, \n","            num_training_steps = num_train_steps,\n","            num_cycles = cfg.num_cycles\n","        )\n","    return scheduler"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["6.2 定义训练函数和评估函数"]},{"cell_type":"code","execution_count":70,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:35.629892Z","iopub.status.busy":"2022-12-14T02:47:35.629414Z","iopub.status.idle":"2022-12-14T02:47:35.651406Z","shell.execute_reply":"2022-12-14T02:47:35.650334Z","shell.execute_reply.started":"2022-12-14T02:47:35.629812Z"},"trusted":true},"outputs":[],"source":["def train_fn(fold,train_loader, model, criterion, optimizer, epoch, scheduler, device):\n","    losses = AverageMeter()\n","    model.train()\n","    scaler = torch.cuda.amp.GradScaler(enabled = CFG.apex) # 自动混合精度训练\n","    start = end = time.time()\n","    global_step = 0\n","    if CFG.fgm:\n","        fgm = FGM(model) # 对抗训练\n","\n","    for step, (inputs, labels) in enumerate(train_loader):\n","        #attention_mask = inputs['attention_mask'].to(device)\n","        inputs = collate(inputs)\n","        for k, v in inputs.items():\n","            inputs[k] = v.to(device)\n","        labels = labels.to(device)\n","        batch_size = labels.size(0)\n","        \n","        with torch.cuda.amp.autocast(enabled = CFG.apex):\n","            y_preds = model(inputs)\n","            loss = criterion(y_preds, labels)\n","        if CFG.gradient_accumulation_steps > 1:\n","            loss = loss / CFG.gradient_accumulation_steps\n","        losses.update(loss.item(), batch_size)\n","        scaler.scale(loss).backward()\n","        if CFG.unscale:\n","            scaler.unscale_(optimizer)\n","        grad_norm = torch.nn.utils.clip_grad_norm_(model.parameters(), CFG.max_grad_norm)\n","        \n","        #Fast Gradient Method (FGM)\n","        if CFG.fgm:\n","            fgm.attack()\n","            with torch.cuda.amp.autocast(enabled = CFG.apex):\n","                y_preds = model(inputs)\n","                loss_adv = criterion(y_preds, labels)\n","                loss_adv.backward()\n","            fgm.restore()\n","            \n","        \n","        if (step + 1) % CFG.gradient_accumulation_steps == 0:\n","            scaler.step(optimizer)\n","            scaler.update()\n","            optimizer.zero_grad()\n","            global_step += 1\n","            scheduler.step()\n","        end = time.time()\n","        \n","        if step % CFG.print_freq == 0 or step == (len(train_loader) - 1):\n","            print('Epoch: [{0}][{1}/{2}] '\n","                  'Elapsed {remain:s} '\n","                  'Loss: {loss.val:.4f}({loss.avg:.4f}) '\n","                  'Grad: {grad_norm:.4f} '\n","                  'LR: {lr:.8f} '\n","                  .format(epoch + 1, step, len(train_loader), remain = timeSince(start, float(step + 1)/len(train_loader)),\n","                          loss = losses,\n","                          grad_norm = grad_norm,\n","                          lr = scheduler.get_lr()[0]))\n","        if CFG.wandb:\n","            wandb.log({\" loss\": losses.val,\n","                       \" lr\": scheduler.get_lr()[0]})\n","    return losses.avg"]},{"cell_type":"code","execution_count":71,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:44.328012Z","iopub.status.busy":"2022-12-14T02:47:44.326829Z","iopub.status.idle":"2022-12-14T02:47:44.338179Z","shell.execute_reply":"2022-12-14T02:47:44.337226Z","shell.execute_reply.started":"2022-12-14T02:47:44.327969Z"},"trusted":true},"outputs":[],"source":["def valid_fn(valid_loader, model, criterion, device):\n","    losses = AverageMeter()\n","    model.eval()\n","    preds ,targets= [],[]\n","    start = end = time.time()\n","    \n","    for step, (inputs, labels) in enumerate(valid_loader):\n","        inputs = collate(inputs)\n","        for k, v in inputs.items():\n","            inputs[k] = v.to(device)\n","        labels = labels.to(device)\n","        batch_size = labels.size(0)\n","        \n","        with torch.no_grad():\n","            y_preds = model(inputs)\n","            loss = criterion(y_preds, labels)\n","        if CFG.gradient_accumulation_steps > 1:\n","            loss = loss / CFG.gradient_accumulation_steps\n","        losses.update(loss.item(), batch_size)\n","        preds.append(y_preds.to('cpu').numpy())\n","        targets.append(labels.to('cpu').numpy())\n","        end = time.time()\n","        \n","        if step % CFG.print_freq == 0 or step == (len(valid_loader)-1):\n","            print('EVAL: [{0}/{1}] '\n","                  'Elapsed {remain:s} '\n","                  'Loss: {loss.val:.4f}({loss.avg:.4f}) '\n","                  .format(step, len(valid_loader),\n","                          loss=losses,\n","                          remain=timeSince(start, float(step+1)/len(valid_loader))))\n","    predictions = np.concatenate(preds)\n","    targets=np.concatenate(targets)\n","    return losses.avg, predictions"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 七、训练"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["7.1 定义训练函数"]},{"cell_type":"code","execution_count":72,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:47:55.256079Z","iopub.status.busy":"2022-12-14T02:47:55.255702Z","iopub.status.idle":"2022-12-14T02:47:55.270776Z","shell.execute_reply":"2022-12-14T02:47:55.269582Z","shell.execute_reply.started":"2022-12-14T02:47:55.256046Z"},"trusted":true},"outputs":[],"source":["def train_loop(df, fold):\n","    logger.info(f\"========== fold: {fold} training ==========\")\n","    # 加载数据集\n","    train_folds = df[df['fold'] != fold].reset_index(drop = True)\n","    valid_folds = df[df['fold'] == fold].reset_index(drop = True)\n","    valid_labels = valid_folds[CFG.target_cols].values\n","    \n","    train_encoding,train_label=preprocess(train_folds,tokenizer,True)\n","    val_encoding,val_label=preprocess(valid_folds,tokenizer,True)\n","    \n","    train_dataset = MyDataset(train_encoding,train_label)\n","    valid_dataset = MyDataset(val_encoding,val_label)\n","    \n","    train_loader = DataLoader(train_dataset,batch_size = CFG.batch_size,shuffle = True, \n","                              num_workers = CFG.num_workers,pin_memory = True)\n","    valid_loader = DataLoader(valid_dataset,batch_size = CFG.batch_size * 2,\n","                              shuffle=False,num_workers=CFG.num_workers,pin_memory=True, )\n","    \n","    model = FB3Model(CFG, config_path = None,pretrained=True) \n","    torch.save(model.config, CFG.OUTPUT_DIR +'./config.pth')\n","    model.to(CFG.device)  \n","    # 加载优化器和调度器\n","    from torch.optim import AdamW\n","    grouped_optimizer_params = get_optimizer_grouped_parameters(model, \n","                               CFG.layerwise_lr,CFG.layerwise_weight_decay,CFG.layerwise_lr_decay)\n","    optimizer = AdamW(grouped_optimizer_params,lr = CFG.layerwise_lr,eps = CFG.layerwise_adam_epsilon)\n","       \n","\n","    num_train_steps = len(train_loader) * CFG.epochs\n","    scheduler = get_scheduler(CFG, optimizer, num_train_steps)\n","    best_score = np.inf\n","\n","    for epoch in range(CFG.epochs): # 开始训练\n","\n","        start_time = time.time()\n","        avg_loss = train_fn(fold, train_loader, model, criterion, optimizer, epoch, scheduler, CFG.device)\n","        avg_val_loss, predictions = valid_fn(valid_loader, model, criterion, CFG.device)\n","        \n","        # scoring\n","        score, scores = MCRMSE(valid_labels, predictions)\n","        elapsed = time.time() - start_time\n","\n","        logger.info(f'Epoch {epoch+1} - avg_train_loss: {avg_loss:.4f}  avg_val_loss: {avg_val_loss:.4f}  time: {elapsed:.0f}s')\n","        logger.info(f'Epoch {epoch+1} - Score: {score:.4f}  Scores: {scores}')\n","        if CFG.wandb:\n","            wandb.log({f\"[fold{fold}] epoch\": epoch+1, \n","                       f\"[fold{fold}] avg_train_loss\": avg_loss, \n","                       f\"[fold{fold}] avg_val_loss\": avg_val_loss,\n","                       f\"[fold{fold}] score\": score})\n","        \n","        if best_score > score:\n","            best_score = score\n","            logger.info(f'Epoch {epoch+1} - Save Best Score: {best_score:.4f} Model')\n","            torch.save({'model': model.state_dict(),\n","                        'predictions': predictions},\n","                        CFG.OUTPUT_DIR+f\"_fold{fold}_best.pth\")\n","\n","    predictions = torch.load(CFG.OUTPUT_DIR+f\"_fold{fold}_best.pth\", \n","                             map_location=torch.device('cpu'))['predictions']\n","    valid_folds[[f\"pred_{c}\" for c in CFG.target_cols]] = predictions\n","\n","    torch.cuda.empty_cache()\n","    gc.collect()\n","    \n","    return valid_folds # 返回验证集，方便后续看4折的验证结果"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 7.2 开始训练"]},{"cell_type":"code","execution_count":73,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T02:48:02.963024Z","iopub.status.busy":"2022-12-14T02:48:02.962613Z","iopub.status.idle":"2022-12-14T05:31:39.994966Z","shell.execute_reply":"2022-12-14T05:31:39.994042Z","shell.execute_reply.started":"2022-12-14T02:48:02.962990Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["========== fold: 0 training ==========\n","========== fold: 0 training ==========\n","========== fold: 0 training ==========\n","========== fold: 0 training ==========\n","Some weights of the model checkpoint at ../input/microsoftdebertav3large/deberta-v3-base were not used when initializing DebertaV2Model: ['mask_predictions.dense.bias', 'lm_predictions.lm_head.dense.weight', 'lm_predictions.lm_head.bias', 'mask_predictions.LayerNorm.weight', 'lm_predictions.lm_head.dense.bias', 'mask_predictions.classifier.weight', 'lm_predictions.lm_head.LayerNorm.bias', 'mask_predictions.LayerNorm.bias', 'mask_predictions.classifier.bias', 'lm_predictions.lm_head.LayerNorm.weight', 'mask_predictions.dense.weight']\n","- This IS expected if you are initializing DebertaV2Model from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DebertaV2Model from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [1][0/367] Elapsed 0m 2s (remain 16m 3s) Loss: 2.3007(2.3007) Grad: inf LR: 0.00005000 \n","Epoch: [1][20/367] Elapsed 0m 27s (remain 7m 37s) Loss: 0.3328(0.7990) Grad: 4058.4080 LR: 0.00004998 \n","Epoch: [1][40/367] Elapsed 0m 52s (remain 7m 0s) Loss: 0.1903(0.5133) Grad: 1172.4146 LR: 0.00004994 \n","Epoch: [1][60/367] Elapsed 1m 18s (remain 6m 31s) Loss: 0.1717(0.3995) Grad: 2026.7766 LR: 0.00004986 \n","Epoch: [1][80/367] Elapsed 1m 43s (remain 6m 4s) Loss: 0.1499(0.3353) Grad: 2231.0737 LR: 0.00004976 \n","Epoch: [1][100/367] Elapsed 2m 8s (remain 5m 38s) Loss: 0.1585(0.2963) Grad: 1359.4740 LR: 0.00004963 \n","Epoch: [1][120/367] Elapsed 2m 33s (remain 5m 12s) Loss: 0.1104(0.2677) Grad: 1182.6658 LR: 0.00004947 \n","Epoch: [1][140/367] Elapsed 2m 58s (remain 4m 46s) Loss: 0.1081(0.2473) Grad: 1090.8944 LR: 0.00004928 \n","Epoch: [1][160/367] Elapsed 3m 23s (remain 4m 20s) Loss: 0.1604(0.2331) Grad: 1268.8202 LR: 0.00004906 \n","Epoch: [1][180/367] Elapsed 3m 48s (remain 3m 55s) Loss: 0.1176(0.2214) Grad: 955.8074 LR: 0.00004881 \n","Epoch: [1][200/367] Elapsed 4m 14s (remain 3m 29s) Loss: 0.1161(0.2114) Grad: 1556.8347 LR: 0.00004853 \n","Epoch: [1][220/367] Elapsed 4m 39s (remain 3m 4s) Loss: 0.1467(0.2020) Grad: 1122.9647 LR: 0.00004823 \n","Epoch: [1][240/367] Elapsed 5m 4s (remain 2m 39s) Loss: 0.1367(0.1949) Grad: 1318.1377 LR: 0.00004790 \n","Epoch: [1][260/367] Elapsed 5m 29s (remain 2m 13s) Loss: 0.0929(0.1882) Grad: 1426.0557 LR: 0.00004755 \n","Epoch: [1][280/367] Elapsed 5m 54s (remain 1m 48s) Loss: 0.1060(0.1838) Grad: 2116.1436 LR: 0.00004716 \n","Epoch: [1][300/367] Elapsed 6m 19s (remain 1m 23s) Loss: 0.0832(0.1802) Grad: 610.3602 LR: 0.00004675 \n","Epoch: [1][320/367] Elapsed 6m 44s (remain 0m 58s) Loss: 0.1037(0.1765) Grad: 1028.1031 LR: 0.00004632 \n","Epoch: [1][340/367] Elapsed 7m 10s (remain 0m 32s) Loss: 0.1217(0.1728) Grad: 2380.1638 LR: 0.00004586 \n","Epoch: [1][360/367] Elapsed 7m 35s (remain 0m 7s) Loss: 0.0831(0.1697) Grad: 2533.2471 LR: 0.00004538 \n","Epoch: [1][366/367] Elapsed 7m 42s (remain 0m 0s) Loss: 0.2673(0.1693) Grad: 2945.6316 LR: 0.00004523 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1066(0.1066) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1156(0.1212) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1164(0.1221) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1291(0.1241) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1699(0.1242) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 1 - avg_train_loss: 0.1693  avg_val_loss: 0.1242  time: 489s\n","Epoch 1 - avg_train_loss: 0.1693  avg_val_loss: 0.1242  time: 489s\n","Epoch 1 - avg_train_loss: 0.1693  avg_val_loss: 0.1242  time: 489s\n","Epoch 1 - avg_train_loss: 0.1693  avg_val_loss: 0.1242  time: 489s\n","Epoch 1 - Score: 0.4995  Scores: [0.5066191587460497, 0.4799088203256072, 0.4737977914189761, 0.48523140999437087, 0.5334565169360733, 0.5180281719487936]\n","Epoch 1 - Score: 0.4995  Scores: [0.5066191587460497, 0.4799088203256072, 0.4737977914189761, 0.48523140999437087, 0.5334565169360733, 0.5180281719487936]\n","Epoch 1 - Score: 0.4995  Scores: [0.5066191587460497, 0.4799088203256072, 0.4737977914189761, 0.48523140999437087, 0.5334565169360733, 0.5180281719487936]\n","Epoch 1 - Score: 0.4995  Scores: [0.5066191587460497, 0.4799088203256072, 0.4737977914189761, 0.48523140999437087, 0.5334565169360733, 0.5180281719487936]\n","Epoch 1 - Save Best Score: 0.4995 Model\n","Epoch 1 - Save Best Score: 0.4995 Model\n","Epoch 1 - Save Best Score: 0.4995 Model\n","Epoch 1 - Save Best Score: 0.4995 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [2][0/367] Elapsed 0m 1s (remain 9m 8s) Loss: 0.1324(0.1324) Grad: 3376.3035 LR: 0.00004520 \n","Epoch: [2][20/367] Elapsed 0m 26s (remain 7m 18s) Loss: 0.1447(0.1231) Grad: 2263.4390 LR: 0.00004468 \n","Epoch: [2][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.1203(0.1130) Grad: 2839.9583 LR: 0.00004414 \n","Epoch: [2][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.0619(0.1147) Grad: 578.9244 LR: 0.00004358 \n","Epoch: [2][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0818(0.1119) Grad: 3465.2581 LR: 0.00004300 \n","Epoch: [2][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.0919(0.1114) Grad: 1349.7047 LR: 0.00004240 \n","Epoch: [2][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1445(0.1103) Grad: 2387.0032 LR: 0.00004177 \n","Epoch: [2][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0962(0.1095) Grad: 1267.9844 LR: 0.00004113 \n","Epoch: [2][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.1071(0.1080) Grad: 1560.3361 LR: 0.00004046 \n","Epoch: [2][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0855(0.1076) Grad: 4908.2334 LR: 0.00003978 \n","Epoch: [2][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1280(0.1079) Grad: 3495.5100 LR: 0.00003908 \n","Epoch: [2][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1222(0.1084) Grad: 1947.2528 LR: 0.00003837 \n","Epoch: [2][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.1299(0.1086) Grad: 1671.5165 LR: 0.00003764 \n","Epoch: [2][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.1130(0.1073) Grad: 1861.6027 LR: 0.00003689 \n","Epoch: [2][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.1361(0.1075) Grad: 3978.9614 LR: 0.00003613 \n","Epoch: [2][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0683(0.1073) Grad: 1873.4569 LR: 0.00003536 \n","Epoch: [2][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.1072(0.1070) Grad: 1786.1084 LR: 0.00003457 \n","Epoch: [2][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0650(0.1064) Grad: 1909.3510 LR: 0.00003378 \n","Epoch: [2][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0861(0.1061) Grad: 2108.3738 LR: 0.00003297 \n","Epoch: [2][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0858(0.1062) Grad: 2674.2161 LR: 0.00003273 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0619(0.0619) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0852(0.1027) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0927(0.1042) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0933(0.1057) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1311(0.1058) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 2 - avg_train_loss: 0.1062  avg_val_loss: 0.1058  time: 487s\n","Epoch 2 - avg_train_loss: 0.1062  avg_val_loss: 0.1058  time: 487s\n","Epoch 2 - avg_train_loss: 0.1062  avg_val_loss: 0.1058  time: 487s\n","Epoch 2 - avg_train_loss: 0.1062  avg_val_loss: 0.1058  time: 487s\n","Epoch 2 - Score: 0.4608  Scores: [0.48606356142212015, 0.4501002470045076, 0.44261955662519237, 0.4585478608182237, 0.4730815492795208, 0.4543631184435183]\n","Epoch 2 - Score: 0.4608  Scores: [0.48606356142212015, 0.4501002470045076, 0.44261955662519237, 0.4585478608182237, 0.4730815492795208, 0.4543631184435183]\n","Epoch 2 - Score: 0.4608  Scores: [0.48606356142212015, 0.4501002470045076, 0.44261955662519237, 0.4585478608182237, 0.4730815492795208, 0.4543631184435183]\n","Epoch 2 - Score: 0.4608  Scores: [0.48606356142212015, 0.4501002470045076, 0.44261955662519237, 0.4585478608182237, 0.4730815492795208, 0.4543631184435183]\n","Epoch 2 - Save Best Score: 0.4608 Model\n","Epoch 2 - Save Best Score: 0.4608 Model\n","Epoch 2 - Save Best Score: 0.4608 Model\n","Epoch 2 - Save Best Score: 0.4608 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [3][0/367] Elapsed 0m 1s (remain 9m 6s) Loss: 0.0940(0.0940) Grad: 3694.4714 LR: 0.00003268 \n","Epoch: [3][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.0965(0.0956) Grad: 2492.3601 LR: 0.00003187 \n","Epoch: [3][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0590(0.0898) Grad: 986.3868 LR: 0.00003104 \n","Epoch: [3][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.0888(0.0880) Grad: 1653.6028 LR: 0.00003020 \n","Epoch: [3][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0745(0.0875) Grad: 2078.2720 LR: 0.00002936 \n","Epoch: [3][100/367] Elapsed 2m 7s (remain 5m 35s) Loss: 0.0905(0.0871) Grad: 1834.8307 LR: 0.00002852 \n","Epoch: [3][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1070(0.0883) Grad: 1635.1630 LR: 0.00002767 \n","Epoch: [3][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0874(0.0885) Grad: 1667.2776 LR: 0.00002682 \n","Epoch: [3][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.1060(0.0889) Grad: 1083.8475 LR: 0.00002596 \n","Epoch: [3][180/367] Elapsed 3m 47s (remain 3m 54s) Loss: 0.0694(0.0891) Grad: 1507.6470 LR: 0.00002511 \n","Epoch: [3][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0846(0.0887) Grad: 2746.2051 LR: 0.00002425 \n","Epoch: [3][220/367] Elapsed 4m 38s (remain 3m 3s) Loss: 0.0880(0.0889) Grad: 1846.5514 LR: 0.00002340 \n","Epoch: [3][240/367] Elapsed 5m 3s (remain 2m 38s) Loss: 0.1010(0.0890) Grad: 1198.1930 LR: 0.00002254 \n","Epoch: [3][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0913(0.0893) Grad: 1903.2664 LR: 0.00002169 \n","Epoch: [3][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0872(0.0897) Grad: 1663.1379 LR: 0.00002085 \n","Epoch: [3][300/367] Elapsed 6m 18s (remain 1m 23s) Loss: 0.0861(0.0894) Grad: 2767.9246 LR: 0.00002000 \n","Epoch: [3][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0746(0.0899) Grad: 1607.7402 LR: 0.00001917 \n","Epoch: [3][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0831(0.0897) Grad: 1990.3291 LR: 0.00001834 \n","Epoch: [3][360/367] Elapsed 7m 34s (remain 0m 7s) Loss: 0.0907(0.0899) Grad: 1648.9675 LR: 0.00001752 \n","Epoch: [3][366/367] Elapsed 7m 41s (remain 0m 0s) Loss: 0.0896(0.0901) Grad: 2066.3176 LR: 0.00001727 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0734(0.0734) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0888(0.0987) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0849(0.1000) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0895(0.1004) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0969(0.1004) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 3 - avg_train_loss: 0.0901  avg_val_loss: 0.1004  time: 488s\n","Epoch 3 - avg_train_loss: 0.0901  avg_val_loss: 0.1004  time: 488s\n","Epoch 3 - avg_train_loss: 0.0901  avg_val_loss: 0.1004  time: 488s\n","Epoch 3 - avg_train_loss: 0.0901  avg_val_loss: 0.1004  time: 488s\n","Epoch 3 - Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Epoch 3 - Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Epoch 3 - Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Epoch 3 - Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Epoch 3 - Save Best Score: 0.4484 Model\n","Epoch 3 - Save Best Score: 0.4484 Model\n","Epoch 3 - Save Best Score: 0.4484 Model\n","Epoch 3 - Save Best Score: 0.4484 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [4][0/367] Elapsed 0m 1s (remain 9m 45s) Loss: 0.0699(0.0699) Grad: 1804.6337 LR: 0.00001723 \n","Epoch: [4][20/367] Elapsed 0m 26s (remain 7m 20s) Loss: 0.0648(0.0805) Grad: 956.7217 LR: 0.00001642 \n","Epoch: [4][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0901(0.0769) Grad: 1331.6868 LR: 0.00001563 \n","Epoch: [4][60/367] Elapsed 1m 17s (remain 6m 26s) Loss: 0.1023(0.0801) Grad: 1275.5392 LR: 0.00001484 \n","Epoch: [4][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0777(0.0792) Grad: 1708.2350 LR: 0.00001406 \n","Epoch: [4][100/367] Elapsed 2m 7s (remain 5m 35s) Loss: 0.0973(0.0800) Grad: 2522.2314 LR: 0.00001330 \n","Epoch: [4][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0732(0.0800) Grad: 3741.2068 LR: 0.00001255 \n","Epoch: [4][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0603(0.0794) Grad: 1269.5665 LR: 0.00001181 \n","Epoch: [4][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.0655(0.0792) Grad: 1877.2518 LR: 0.00001110 \n","Epoch: [4][180/367] Elapsed 3m 47s (remain 3m 54s) Loss: 0.1050(0.0790) Grad: 1337.7130 LR: 0.00001039 \n","Epoch: [4][200/367] Elapsed 4m 13s (remain 3m 28s) Loss: 0.0735(0.0786) Grad: 1884.2539 LR: 0.00000971 \n","Epoch: [4][220/367] Elapsed 4m 38s (remain 3m 3s) Loss: 0.0662(0.0789) Grad: 2192.4775 LR: 0.00000904 \n","Epoch: [4][240/367] Elapsed 5m 3s (remain 2m 38s) Loss: 0.0603(0.0789) Grad: 1747.0007 LR: 0.00000839 \n","Epoch: [4][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0515(0.0785) Grad: 1209.2373 LR: 0.00000776 \n","Epoch: [4][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0714(0.0781) Grad: 2262.8254 LR: 0.00000715 \n","Epoch: [4][300/367] Elapsed 6m 18s (remain 1m 23s) Loss: 0.0620(0.0780) Grad: 1357.1256 LR: 0.00000656 \n","Epoch: [4][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0879(0.0778) Grad: 1574.6749 LR: 0.00000599 \n","Epoch: [4][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0772(0.0774) Grad: 984.6105 LR: 0.00000545 \n","Epoch: [4][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0348(0.0770) Grad: 1433.6591 LR: 0.00000493 \n","Epoch: [4][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0636(0.0769) Grad: 1203.3401 LR: 0.00000477 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0635(0.0635) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0861(0.0993) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0917(0.1014) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0905(0.1018) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1047(0.1018) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 4 - avg_train_loss: 0.0769  avg_val_loss: 0.1018  time: 488s\n","Epoch 4 - avg_train_loss: 0.0769  avg_val_loss: 0.1018  time: 488s\n","Epoch 4 - avg_train_loss: 0.0769  avg_val_loss: 0.1018  time: 488s\n","Epoch 4 - avg_train_loss: 0.0769  avg_val_loss: 0.1018  time: 488s\n","Epoch 4 - Score: 0.4515  Scores: [0.4798217733706227, 0.44893814804102483, 0.4131637710471425, 0.4576874959662102, 0.467932326615882, 0.4417553129222193]\n","Epoch 4 - Score: 0.4515  Scores: [0.4798217733706227, 0.44893814804102483, 0.4131637710471425, 0.4576874959662102, 0.467932326615882, 0.4417553129222193]\n","Epoch 4 - Score: 0.4515  Scores: [0.4798217733706227, 0.44893814804102483, 0.4131637710471425, 0.4576874959662102, 0.467932326615882, 0.4417553129222193]\n","Epoch 4 - Score: 0.4515  Scores: [0.4798217733706227, 0.44893814804102483, 0.4131637710471425, 0.4576874959662102, 0.467932326615882, 0.4417553129222193]\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [5][0/367] Elapsed 0m 1s (remain 8m 56s) Loss: 0.0778(0.0778) Grad: 2730.3787 LR: 0.00000475 \n","Epoch: [5][20/367] Elapsed 0m 26s (remain 7m 15s) Loss: 0.0544(0.0664) Grad: 1092.7238 LR: 0.00000426 \n","Epoch: [5][40/367] Elapsed 0m 51s (remain 6m 50s) Loss: 0.0583(0.0657) Grad: 1103.8168 LR: 0.00000379 \n","Epoch: [5][60/367] Elapsed 1m 16s (remain 6m 24s) Loss: 0.0554(0.0674) Grad: 1650.9573 LR: 0.00000335 \n","Epoch: [5][80/367] Elapsed 1m 41s (remain 5m 59s) Loss: 0.0545(0.0672) Grad: 1718.9659 LR: 0.00000294 \n","Epoch: [5][100/367] Elapsed 2m 6s (remain 5m 34s) Loss: 0.0648(0.0675) Grad: 2566.9861 LR: 0.00000255 \n","Epoch: [5][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0637(0.0669) Grad: 1140.0104 LR: 0.00000218 \n","Epoch: [5][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0565(0.0680) Grad: 1008.0473 LR: 0.00000185 \n","Epoch: [5][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0488(0.0672) Grad: 1019.6648 LR: 0.00000154 \n","Epoch: [5][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0691(0.0672) Grad: 1277.9023 LR: 0.00000126 \n","Epoch: [5][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0508(0.0671) Grad: 1211.4263 LR: 0.00000100 \n","Epoch: [5][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0760(0.0669) Grad: 1932.5730 LR: 0.00000078 \n","Epoch: [5][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0470(0.0669) Grad: 1552.8850 LR: 0.00000058 \n","Epoch: [5][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0729(0.0667) Grad: 1435.9537 LR: 0.00000041 \n","Epoch: [5][280/367] Elapsed 5m 52s (remain 1m 48s) Loss: 0.0655(0.0668) Grad: 1370.2396 LR: 0.00000027 \n","Epoch: [5][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0768(0.0669) Grad: 1016.1310 LR: 0.00000016 \n","Epoch: [5][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0687(0.0670) Grad: 1530.1047 LR: 0.00000008 \n","Epoch: [5][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0736(0.0670) Grad: 2115.5422 LR: 0.00000002 \n","Epoch: [5][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0698(0.0672) Grad: 1927.1948 LR: 0.00000000 \n","Epoch: [5][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0585(0.0672) Grad: 1047.5142 LR: 0.00000000 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 40s) Loss: 0.0697(0.0697) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0867(0.0998) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0877(0.1016) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0878(0.1017) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0877(0.1017) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 5 - avg_train_loss: 0.0672  avg_val_loss: 0.1017  time: 487s\n","Epoch 5 - avg_train_loss: 0.0672  avg_val_loss: 0.1017  time: 487s\n","Epoch 5 - avg_train_loss: 0.0672  avg_val_loss: 0.1017  time: 487s\n","Epoch 5 - avg_train_loss: 0.0672  avg_val_loss: 0.1017  time: 487s\n","Epoch 5 - Score: 0.4512  Scores: [0.4792873623570794, 0.4474136181806291, 0.4093300968473471, 0.45958705730131894, 0.4697980389879394, 0.44176070473383444]\n","Epoch 5 - Score: 0.4512  Scores: [0.4792873623570794, 0.4474136181806291, 0.4093300968473471, 0.45958705730131894, 0.4697980389879394, 0.44176070473383444]\n","Epoch 5 - Score: 0.4512  Scores: [0.4792873623570794, 0.4474136181806291, 0.4093300968473471, 0.45958705730131894, 0.4697980389879394, 0.44176070473383444]\n","Epoch 5 - Score: 0.4512  Scores: [0.4792873623570794, 0.4474136181806291, 0.4093300968473471, 0.45958705730131894, 0.4697980389879394, 0.44176070473383444]\n","Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","Score: 0.4484  Scores: [0.4763698683790537, 0.44447743216238483, 0.4111009430090402, 0.4569800682462024, 0.4641001852258405, 0.43745073371646975]\n","========== fold: 1 training ==========\n","========== fold: 1 training ==========\n","========== fold: 1 training ==========\n","========== fold: 1 training ==========\n","Some weights of the model checkpoint at ../input/microsoftdebertav3large/deberta-v3-base were not used when initializing DebertaV2Model: ['mask_predictions.dense.bias', 'lm_predictions.lm_head.dense.weight', 'lm_predictions.lm_head.bias', 'mask_predictions.LayerNorm.weight', 'lm_predictions.lm_head.dense.bias', 'mask_predictions.classifier.weight', 'lm_predictions.lm_head.LayerNorm.bias', 'mask_predictions.LayerNorm.bias', 'mask_predictions.classifier.bias', 'lm_predictions.lm_head.LayerNorm.weight', 'mask_predictions.dense.weight']\n","- This IS expected if you are initializing DebertaV2Model from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DebertaV2Model from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [1][0/367] Elapsed 0m 1s (remain 9m 7s) Loss: 2.3803(2.3803) Grad: inf LR: 0.00005000 \n","Epoch: [1][20/367] Elapsed 0m 26s (remain 7m 18s) Loss: 0.2379(0.8238) Grad: 1081.5398 LR: 0.00004998 \n","Epoch: [1][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.2970(0.5137) Grad: 1840.1034 LR: 0.00004994 \n","Epoch: [1][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.1446(0.3932) Grad: 891.6850 LR: 0.00004986 \n","Epoch: [1][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.1699(0.3325) Grad: 1157.8081 LR: 0.00004976 \n","Epoch: [1][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.1353(0.2961) Grad: 920.7859 LR: 0.00004963 \n","Epoch: [1][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1487(0.2679) Grad: 1605.5040 LR: 0.00004947 \n","Epoch: [1][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.1137(0.2466) Grad: 1994.9214 LR: 0.00004928 \n","Epoch: [1][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0918(0.2305) Grad: 1597.1256 LR: 0.00004906 \n","Epoch: [1][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1658(0.2181) Grad: 1224.4966 LR: 0.00004881 \n","Epoch: [1][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1316(0.2088) Grad: 1985.1229 LR: 0.00004853 \n","Epoch: [1][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1071(0.2004) Grad: 1187.9471 LR: 0.00004823 \n","Epoch: [1][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0752(0.1928) Grad: 2027.1346 LR: 0.00004790 \n","Epoch: [1][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0876(0.1886) Grad: 1670.5670 LR: 0.00004755 \n","Epoch: [1][280/367] Elapsed 5m 52s (remain 1m 48s) Loss: 0.0961(0.1825) Grad: 780.4056 LR: 0.00004716 \n","Epoch: [1][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.1232(0.1775) Grad: 800.5460 LR: 0.00004675 \n","Epoch: [1][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.1122(0.1740) Grad: 668.3605 LR: 0.00004632 \n","Epoch: [1][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.1140(0.1709) Grad: 1490.7213 LR: 0.00004586 \n","Epoch: [1][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0847(0.1675) Grad: 1265.5839 LR: 0.00004538 \n","Epoch: [1][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0934(0.1664) Grad: 803.0880 LR: 0.00004523 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1026(0.1026) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.1051(0.1202) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1058(0.1196) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1067(0.1204) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0556(0.1203) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 1 - avg_train_loss: 0.1664  avg_val_loss: 0.1203  time: 487s\n","Epoch 1 - avg_train_loss: 0.1664  avg_val_loss: 0.1203  time: 487s\n","Epoch 1 - avg_train_loss: 0.1664  avg_val_loss: 0.1203  time: 487s\n","Epoch 1 - avg_train_loss: 0.1664  avg_val_loss: 0.1203  time: 487s\n","Epoch 1 - Score: 0.4924  Scores: [0.505574728848393, 0.4647765024987947, 0.49661148042511427, 0.4749900317061609, 0.49202603857128746, 0.52043893805028]\n","Epoch 1 - Score: 0.4924  Scores: [0.505574728848393, 0.4647765024987947, 0.49661148042511427, 0.4749900317061609, 0.49202603857128746, 0.52043893805028]\n","Epoch 1 - Score: 0.4924  Scores: [0.505574728848393, 0.4647765024987947, 0.49661148042511427, 0.4749900317061609, 0.49202603857128746, 0.52043893805028]\n","Epoch 1 - Score: 0.4924  Scores: [0.505574728848393, 0.4647765024987947, 0.49661148042511427, 0.4749900317061609, 0.49202603857128746, 0.52043893805028]\n","Epoch 1 - Save Best Score: 0.4924 Model\n","Epoch 1 - Save Best Score: 0.4924 Model\n","Epoch 1 - Save Best Score: 0.4924 Model\n","Epoch 1 - Save Best Score: 0.4924 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [2][0/367] Elapsed 0m 1s (remain 9m 4s) Loss: 0.0894(0.0894) Grad: 3487.6716 LR: 0.00004520 \n","Epoch: [2][20/367] Elapsed 0m 26s (remain 7m 20s) Loss: 0.0856(0.1074) Grad: 2792.5620 LR: 0.00004468 \n","Epoch: [2][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.1041(0.1013) Grad: 899.6332 LR: 0.00004414 \n","Epoch: [2][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.0827(0.1029) Grad: 967.6985 LR: 0.00004358 \n","Epoch: [2][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.1418(0.1044) Grad: 3323.2766 LR: 0.00004300 \n","Epoch: [2][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.0828(0.1038) Grad: 1553.2633 LR: 0.00004240 \n","Epoch: [2][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0677(0.1021) Grad: 1761.1548 LR: 0.00004177 \n","Epoch: [2][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0922(0.1015) Grad: 1003.9145 LR: 0.00004113 \n","Epoch: [2][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0993(0.1017) Grad: 1511.4001 LR: 0.00004046 \n","Epoch: [2][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1216(0.1019) Grad: 2194.5315 LR: 0.00003978 \n","Epoch: [2][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1321(0.1009) Grad: 1500.1921 LR: 0.00003908 \n","Epoch: [2][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1253(0.1001) Grad: 2327.3770 LR: 0.00003837 \n","Epoch: [2][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0660(0.0998) Grad: 2704.2817 LR: 0.00003764 \n","Epoch: [2][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.1137(0.0995) Grad: 3376.3025 LR: 0.00003689 \n","Epoch: [2][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0847(0.0997) Grad: 1584.7343 LR: 0.00003613 \n","Epoch: [2][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0687(0.0996) Grad: 1584.0270 LR: 0.00003536 \n","Epoch: [2][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0869(0.0991) Grad: 2006.5259 LR: 0.00003457 \n","Epoch: [2][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.1085(0.0993) Grad: 1694.9462 LR: 0.00003378 \n","Epoch: [2][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.1405(0.0998) Grad: 3559.9465 LR: 0.00003297 \n","Epoch: [2][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0695(0.0998) Grad: 1389.7231 LR: 0.00003273 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0827(0.0827) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1028(0.1098) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0903(0.1063) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0909(0.1057) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0451(0.1057) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 2 - avg_train_loss: 0.0998  avg_val_loss: 0.1057  time: 488s\n","Epoch 2 - avg_train_loss: 0.0998  avg_val_loss: 0.1057  time: 488s\n","Epoch 2 - avg_train_loss: 0.0998  avg_val_loss: 0.1057  time: 488s\n","Epoch 2 - avg_train_loss: 0.0998  avg_val_loss: 0.1057  time: 488s\n","Epoch 2 - Score: 0.4606  Scores: [0.49721522973257526, 0.4500166598695156, 0.4257344435432822, 0.4555202607556544, 0.48234354479899144, 0.4526176575448055]\n","Epoch 2 - Score: 0.4606  Scores: [0.49721522973257526, 0.4500166598695156, 0.4257344435432822, 0.4555202607556544, 0.48234354479899144, 0.4526176575448055]\n","Epoch 2 - Score: 0.4606  Scores: [0.49721522973257526, 0.4500166598695156, 0.4257344435432822, 0.4555202607556544, 0.48234354479899144, 0.4526176575448055]\n","Epoch 2 - Score: 0.4606  Scores: [0.49721522973257526, 0.4500166598695156, 0.4257344435432822, 0.4555202607556544, 0.48234354479899144, 0.4526176575448055]\n","Epoch 2 - Save Best Score: 0.4606 Model\n","Epoch 2 - Save Best Score: 0.4606 Model\n","Epoch 2 - Save Best Score: 0.4606 Model\n","Epoch 2 - Save Best Score: 0.4606 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [3][0/367] Elapsed 0m 1s (remain 9m 13s) Loss: 0.0634(0.0634) Grad: 2223.4216 LR: 0.00003268 \n","Epoch: [3][20/367] Elapsed 0m 26s (remain 7m 16s) Loss: 0.1016(0.0863) Grad: 4681.9458 LR: 0.00003187 \n","Epoch: [3][40/367] Elapsed 0m 51s (remain 6m 50s) Loss: 0.1192(0.0816) Grad: 6827.8037 LR: 0.00003104 \n","Epoch: [3][60/367] Elapsed 1m 16s (remain 6m 24s) Loss: 0.1091(0.0832) Grad: 2188.7468 LR: 0.00003020 \n","Epoch: [3][80/367] Elapsed 1m 41s (remain 5m 59s) Loss: 0.0766(0.0817) Grad: 2232.4487 LR: 0.00002936 \n","Epoch: [3][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.0682(0.0813) Grad: 1774.8785 LR: 0.00002852 \n","Epoch: [3][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0825(0.0828) Grad: 2271.7192 LR: 0.00002767 \n","Epoch: [3][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.1270(0.0847) Grad: 2763.4365 LR: 0.00002682 \n","Epoch: [3][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.1033(0.0844) Grad: 1395.6683 LR: 0.00002596 \n","Epoch: [3][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0688(0.0841) Grad: 978.9644 LR: 0.00002511 \n","Epoch: [3][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1104(0.0844) Grad: 4400.8491 LR: 0.00002425 \n","Epoch: [3][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0729(0.0843) Grad: 1369.6841 LR: 0.00002340 \n","Epoch: [3][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.1365(0.0841) Grad: 3223.8977 LR: 0.00002254 \n","Epoch: [3][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0670(0.0834) Grad: 1540.9257 LR: 0.00002169 \n","Epoch: [3][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0786(0.0831) Grad: 1354.8435 LR: 0.00002085 \n","Epoch: [3][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0418(0.0829) Grad: 1167.8206 LR: 0.00002000 \n","Epoch: [3][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0589(0.0830) Grad: 1259.1239 LR: 0.00001917 \n","Epoch: [3][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0715(0.0833) Grad: 800.3451 LR: 0.00001834 \n","Epoch: [3][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0668(0.0833) Grad: 1440.1946 LR: 0.00001752 \n","Epoch: [3][366/367] Elapsed 7m 41s (remain 0m 0s) Loss: 0.1070(0.0834) Grad: 3637.0759 LR: 0.00001727 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0947(0.0947) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.0998(0.1099) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0967(0.1061) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0941(0.1060) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0387(0.1059) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 3 - avg_train_loss: 0.0834  avg_val_loss: 0.1059  time: 488s\n","Epoch 3 - avg_train_loss: 0.0834  avg_val_loss: 0.1059  time: 488s\n","Epoch 3 - avg_train_loss: 0.0834  avg_val_loss: 0.1059  time: 488s\n","Epoch 3 - avg_train_loss: 0.0834  avg_val_loss: 0.1059  time: 488s\n","Epoch 3 - Score: 0.4612  Scores: [0.4938119912143471, 0.4509439944820966, 0.42681136444766427, 0.45802810675707556, 0.47714573149000183, 0.46059760831226626]\n","Epoch 3 - Score: 0.4612  Scores: [0.4938119912143471, 0.4509439944820966, 0.42681136444766427, 0.45802810675707556, 0.47714573149000183, 0.46059760831226626]\n","Epoch 3 - Score: 0.4612  Scores: [0.4938119912143471, 0.4509439944820966, 0.42681136444766427, 0.45802810675707556, 0.47714573149000183, 0.46059760831226626]\n","Epoch 3 - Score: 0.4612  Scores: [0.4938119912143471, 0.4509439944820966, 0.42681136444766427, 0.45802810675707556, 0.47714573149000183, 0.46059760831226626]\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [4][0/367] Elapsed 0m 1s (remain 9m 1s) Loss: 0.0740(0.0740) Grad: 2376.9612 LR: 0.00001723 \n","Epoch: [4][20/367] Elapsed 0m 26s (remain 7m 15s) Loss: 0.0607(0.0665) Grad: 3907.6853 LR: 0.00001642 \n","Epoch: [4][40/367] Elapsed 0m 51s (remain 6m 49s) Loss: 0.0869(0.0658) Grad: 3944.3462 LR: 0.00001563 \n","Epoch: [4][60/367] Elapsed 1m 16s (remain 6m 23s) Loss: 0.0654(0.0668) Grad: 1280.7670 LR: 0.00001484 \n","Epoch: [4][80/367] Elapsed 1m 41s (remain 5m 59s) Loss: 0.0679(0.0670) Grad: 1300.4840 LR: 0.00001406 \n","Epoch: [4][100/367] Elapsed 2m 6s (remain 5m 34s) Loss: 0.0765(0.0671) Grad: 1582.8250 LR: 0.00001330 \n","Epoch: [4][120/367] Elapsed 2m 31s (remain 5m 9s) Loss: 0.1080(0.0677) Grad: 2120.4727 LR: 0.00001255 \n","Epoch: [4][140/367] Elapsed 2m 57s (remain 4m 43s) Loss: 0.0729(0.0679) Grad: 2707.4521 LR: 0.00001181 \n","Epoch: [4][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0542(0.0674) Grad: 2185.8647 LR: 0.00001110 \n","Epoch: [4][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0533(0.0669) Grad: 1294.0323 LR: 0.00001039 \n","Epoch: [4][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0666(0.0662) Grad: 1169.7198 LR: 0.00000971 \n","Epoch: [4][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0676(0.0664) Grad: 2041.4697 LR: 0.00000904 \n","Epoch: [4][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.1033(0.0665) Grad: 2143.7561 LR: 0.00000839 \n","Epoch: [4][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0768(0.0664) Grad: 1992.1790 LR: 0.00000776 \n","Epoch: [4][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0697(0.0668) Grad: 2408.3918 LR: 0.00000715 \n","Epoch: [4][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0494(0.0666) Grad: 1437.4270 LR: 0.00000656 \n","Epoch: [4][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0649(0.0667) Grad: 1760.2067 LR: 0.00000599 \n","Epoch: [4][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0504(0.0665) Grad: 1198.7003 LR: 0.00000545 \n","Epoch: [4][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0712(0.0664) Grad: 1233.9127 LR: 0.00000493 \n","Epoch: [4][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0682(0.0664) Grad: 1978.3706 LR: 0.00000477 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 42s) Loss: 0.0972(0.0972) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1152(0.1110) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0958(0.1059) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0830(0.1049) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0362(0.1048) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 4 - avg_train_loss: 0.0664  avg_val_loss: 0.1048  time: 488s\n","Epoch 4 - avg_train_loss: 0.0664  avg_val_loss: 0.1048  time: 488s\n","Epoch 4 - avg_train_loss: 0.0664  avg_val_loss: 0.1048  time: 488s\n","Epoch 4 - avg_train_loss: 0.0664  avg_val_loss: 0.1048  time: 488s\n","Epoch 4 - Score: 0.4589  Scores: [0.4858678463333144, 0.4521281521643331, 0.42532835031794175, 0.45791383679294795, 0.4808091326120579, 0.45110540672079186]\n","Epoch 4 - Score: 0.4589  Scores: [0.4858678463333144, 0.4521281521643331, 0.42532835031794175, 0.45791383679294795, 0.4808091326120579, 0.45110540672079186]\n","Epoch 4 - Score: 0.4589  Scores: [0.4858678463333144, 0.4521281521643331, 0.42532835031794175, 0.45791383679294795, 0.4808091326120579, 0.45110540672079186]\n","Epoch 4 - Score: 0.4589  Scores: [0.4858678463333144, 0.4521281521643331, 0.42532835031794175, 0.45791383679294795, 0.4808091326120579, 0.45110540672079186]\n","Epoch 4 - Save Best Score: 0.4589 Model\n","Epoch 4 - Save Best Score: 0.4589 Model\n","Epoch 4 - Save Best Score: 0.4589 Model\n","Epoch 4 - Save Best Score: 0.4589 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [5][100/367] Elapsed 2m 6s (remain 5m 33s) Loss: 0.0401(0.0564) Grad: 1219.2686 LR: 0.00000255 \n","Epoch: [5][120/367] Elapsed 2m 31s (remain 5m 8s) Loss: 0.0785(0.0567) Grad: 2790.3127 LR: 0.00000218 \n","Epoch: [5][140/367] Elapsed 2m 56s (remain 4m 43s) Loss: 0.0561(0.0570) Grad: 3245.9722 LR: 0.00000185 \n","Epoch: [5][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0578(0.0573) Grad: 2004.3169 LR: 0.00000154 \n","Epoch: [5][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0563(0.0575) Grad: 2371.0613 LR: 0.00000126 \n","Epoch: [5][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1090(0.0576) Grad: 4241.1958 LR: 0.00000100 \n","Epoch: [5][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0481(0.0573) Grad: 1966.8292 LR: 0.00000078 \n","Epoch: [5][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0470(0.0570) Grad: 2800.4739 LR: 0.00000058 \n","Epoch: [5][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0479(0.0569) Grad: 2818.9680 LR: 0.00000041 \n","Epoch: [5][280/367] Elapsed 5m 52s (remain 1m 47s) Loss: 0.0652(0.0569) Grad: 1853.1656 LR: 0.00000027 \n","Epoch: [5][300/367] Elapsed 6m 17s (remain 1m 22s) Loss: 0.0652(0.0567) Grad: 2378.4932 LR: 0.00000016 \n","Epoch: [5][320/367] Elapsed 6m 42s (remain 0m 57s) Loss: 0.0761(0.0565) Grad: 2059.4448 LR: 0.00000008 \n","Epoch: [5][340/367] Elapsed 7m 7s (remain 0m 32s) Loss: 0.0632(0.0567) Grad: 3004.1538 LR: 0.00000002 \n","Epoch: [5][360/367] Elapsed 7m 32s (remain 0m 7s) Loss: 0.0587(0.0567) Grad: 1901.7715 LR: 0.00000000 \n","Epoch: [5][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0635(0.0566) Grad: 2997.2314 LR: 0.00000000 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 42s) Loss: 0.1008(0.1008) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1073(0.1087) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0968(0.1049) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0851(0.1049) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0423(0.1048) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 5 - avg_train_loss: 0.0566  avg_val_loss: 0.1048  time: 487s\n","Epoch 5 - avg_train_loss: 0.0566  avg_val_loss: 0.1048  time: 487s\n","Epoch 5 - avg_train_loss: 0.0566  avg_val_loss: 0.1048  time: 487s\n","Epoch 5 - avg_train_loss: 0.0566  avg_val_loss: 0.1048  time: 487s\n","Epoch 5 - Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Epoch 5 - Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Epoch 5 - Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Epoch 5 - Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Epoch 5 - Save Best Score: 0.4588 Model\n","Epoch 5 - Save Best Score: 0.4588 Model\n","Epoch 5 - Save Best Score: 0.4588 Model\n","Epoch 5 - Save Best Score: 0.4588 Model\n","Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","Score: 0.4588  Scores: [0.48934341705423484, 0.45152724159960594, 0.4211530623701088, 0.45598372500194073, 0.4812849340569932, 0.45351347396554526]\n","========== fold: 2 training ==========\n","========== fold: 2 training ==========\n","========== fold: 2 training ==========\n","========== fold: 2 training ==========\n","Some weights of the model checkpoint at ../input/microsoftdebertav3large/deberta-v3-base were not used when initializing DebertaV2Model: ['mask_predictions.dense.bias', 'lm_predictions.lm_head.dense.weight', 'lm_predictions.lm_head.bias', 'mask_predictions.LayerNorm.weight', 'lm_predictions.lm_head.dense.bias', 'mask_predictions.classifier.weight', 'lm_predictions.lm_head.LayerNorm.bias', 'mask_predictions.LayerNorm.bias', 'mask_predictions.classifier.bias', 'lm_predictions.lm_head.LayerNorm.weight', 'mask_predictions.dense.weight']\n","- This IS expected if you are initializing DebertaV2Model from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DebertaV2Model from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [1][0/367] Elapsed 0m 1s (remain 9m 10s) Loss: 2.8654(2.8654) Grad: inf LR: 0.00005000 \n","Epoch: [1][20/367] Elapsed 0m 26s (remain 7m 14s) Loss: 0.1701(0.8740) Grad: 903.8144 LR: 0.00004998 \n","Epoch: [1][40/367] Elapsed 0m 51s (remain 6m 49s) Loss: 0.1781(0.5452) Grad: 1942.1959 LR: 0.00004994 \n","Epoch: [1][60/367] Elapsed 1m 16s (remain 6m 24s) Loss: 0.1226(0.4109) Grad: 1158.5552 LR: 0.00004986 \n","Epoch: [1][80/367] Elapsed 1m 41s (remain 5m 59s) Loss: 0.1370(0.3539) Grad: 1684.4263 LR: 0.00004976 \n","Epoch: [1][100/367] Elapsed 2m 6s (remain 5m 34s) Loss: 0.1235(0.3143) Grad: 948.8470 LR: 0.00004963 \n","Epoch: [1][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1392(0.2819) Grad: 1318.6019 LR: 0.00004947 \n","Epoch: [1][140/367] Elapsed 2m 57s (remain 4m 43s) Loss: 0.0613(0.2587) Grad: 1238.9424 LR: 0.00004928 \n","Epoch: [1][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.1121(0.2422) Grad: 1094.6832 LR: 0.00004906 \n","Epoch: [1][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1325(0.2280) Grad: 1128.1296 LR: 0.00004881 \n","Epoch: [1][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1199(0.2177) Grad: 935.6354 LR: 0.00004853 \n","Epoch: [1][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0811(0.2081) Grad: 1120.7948 LR: 0.00004823 \n","Epoch: [1][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.1305(0.2003) Grad: 665.2416 LR: 0.00004790 \n","Epoch: [1][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0769(0.1924) Grad: 1477.7300 LR: 0.00004755 \n","Epoch: [1][280/367] Elapsed 5m 52s (remain 1m 48s) Loss: 0.1041(0.1882) Grad: 1608.9447 LR: 0.00004716 \n","Epoch: [1][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.2159(0.1842) Grad: 995.1196 LR: 0.00004675 \n","Epoch: [1][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.1670(0.1810) Grad: 1366.9532 LR: 0.00004632 \n","Epoch: [1][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0590(0.1769) Grad: 806.9825 LR: 0.00004586 \n","Epoch: [1][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.1010(0.1734) Grad: 1471.7404 LR: 0.00004538 \n","Epoch: [1][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.1123(0.1723) Grad: 1554.7375 LR: 0.00004523 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1472(0.1472) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.0939(0.1140) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1010(0.1124) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0874(0.1129) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1587(0.1130) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 1 - avg_train_loss: 0.1723  avg_val_loss: 0.1130  time: 487s\n","Epoch 1 - avg_train_loss: 0.1723  avg_val_loss: 0.1130  time: 487s\n","Epoch 1 - avg_train_loss: 0.1723  avg_val_loss: 0.1130  time: 487s\n","Epoch 1 - avg_train_loss: 0.1723  avg_val_loss: 0.1130  time: 487s\n","Epoch 1 - Score: 0.4764  Scores: [0.5206680400186484, 0.46862886222124894, 0.43292431769901596, 0.47744308620206444, 0.48686024731522787, 0.47169136947293666]\n","Epoch 1 - Score: 0.4764  Scores: [0.5206680400186484, 0.46862886222124894, 0.43292431769901596, 0.47744308620206444, 0.48686024731522787, 0.47169136947293666]\n","Epoch 1 - Score: 0.4764  Scores: [0.5206680400186484, 0.46862886222124894, 0.43292431769901596, 0.47744308620206444, 0.48686024731522787, 0.47169136947293666]\n","Epoch 1 - Score: 0.4764  Scores: [0.5206680400186484, 0.46862886222124894, 0.43292431769901596, 0.47744308620206444, 0.48686024731522787, 0.47169136947293666]\n","Epoch 1 - Save Best Score: 0.4764 Model\n","Epoch 1 - Save Best Score: 0.4764 Model\n","Epoch 1 - Save Best Score: 0.4764 Model\n","Epoch 1 - Save Best Score: 0.4764 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [2][0/367] Elapsed 0m 1s (remain 9m 3s) Loss: 0.0790(0.0790) Grad: 3313.9097 LR: 0.00004520 \n","Epoch: [2][20/367] Elapsed 0m 26s (remain 7m 18s) Loss: 0.1089(0.1061) Grad: 2213.9368 LR: 0.00004468 \n","Epoch: [2][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.0617(0.1023) Grad: 1112.1855 LR: 0.00004414 \n","Epoch: [2][60/367] Elapsed 1m 16s (remain 6m 26s) Loss: 0.1065(0.0975) Grad: 1605.3789 LR: 0.00004358 \n","Epoch: [2][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0949(0.0977) Grad: 1760.6147 LR: 0.00004300 \n","Epoch: [2][100/367] Elapsed 2m 7s (remain 5m 35s) Loss: 0.0812(0.0968) Grad: 1677.5594 LR: 0.00004240 \n","Epoch: [2][120/367] Elapsed 2m 32s (remain 5m 10s) Loss: 0.0971(0.0982) Grad: 1611.7588 LR: 0.00004177 \n","Epoch: [2][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0929(0.1001) Grad: 932.0147 LR: 0.00004113 \n","Epoch: [2][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.1250(0.1004) Grad: 3887.9551 LR: 0.00004046 \n","Epoch: [2][180/367] Elapsed 3m 47s (remain 3m 54s) Loss: 0.0986(0.1007) Grad: 1503.5557 LR: 0.00003978 \n","Epoch: [2][200/367] Elapsed 4m 13s (remain 3m 28s) Loss: 0.1027(0.0996) Grad: 2523.0608 LR: 0.00003908 \n","Epoch: [2][220/367] Elapsed 4m 38s (remain 3m 3s) Loss: 0.0945(0.1001) Grad: 1405.2766 LR: 0.00003837 \n","Epoch: [2][240/367] Elapsed 5m 3s (remain 2m 38s) Loss: 0.1149(0.1009) Grad: 2652.9373 LR: 0.00003764 \n","Epoch: [2][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0999(0.1014) Grad: 1537.7886 LR: 0.00003689 \n","Epoch: [2][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0905(0.1006) Grad: 3057.4199 LR: 0.00003613 \n","Epoch: [2][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.1098(0.1017) Grad: 1216.8088 LR: 0.00003536 \n","Epoch: [2][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0497(0.1010) Grad: 955.8860 LR: 0.00003457 \n","Epoch: [2][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0783(0.1007) Grad: 2717.5225 LR: 0.00003378 \n","Epoch: [2][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.1039(0.1007) Grad: 2318.9299 LR: 0.00003297 \n","Epoch: [2][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0769(0.1005) Grad: 1194.1848 LR: 0.00003273 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1530(0.1530) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1089(0.1188) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1158(0.1174) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1019(0.1174) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.2103(0.1175) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 2 - avg_train_loss: 0.1005  avg_val_loss: 0.1175  time: 488s\n","Epoch 2 - avg_train_loss: 0.1005  avg_val_loss: 0.1175  time: 488s\n","Epoch 2 - avg_train_loss: 0.1005  avg_val_loss: 0.1175  time: 488s\n","Epoch 2 - avg_train_loss: 0.1005  avg_val_loss: 0.1175  time: 488s\n","Epoch 2 - Score: 0.4861  Scores: [0.5022667467113477, 0.4899471005370794, 0.42439311843884475, 0.47742116329977874, 0.5084445090109564, 0.5139658470495708]\n","Epoch 2 - Score: 0.4861  Scores: [0.5022667467113477, 0.4899471005370794, 0.42439311843884475, 0.47742116329977874, 0.5084445090109564, 0.5139658470495708]\n","Epoch 2 - Score: 0.4861  Scores: [0.5022667467113477, 0.4899471005370794, 0.42439311843884475, 0.47742116329977874, 0.5084445090109564, 0.5139658470495708]\n","Epoch 2 - Score: 0.4861  Scores: [0.5022667467113477, 0.4899471005370794, 0.42439311843884475, 0.47742116329977874, 0.5084445090109564, 0.5139658470495708]\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [3][0/367] Elapsed 0m 1s (remain 9m 3s) Loss: 0.0921(0.0921) Grad: 1948.6517 LR: 0.00003268 \n","Epoch: [3][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.1021(0.0850) Grad: 5962.1357 LR: 0.00003187 \n","Epoch: [3][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0906(0.0885) Grad: 2986.0833 LR: 0.00003104 \n","Epoch: [3][60/367] Elapsed 1m 17s (remain 6m 26s) Loss: 0.0891(0.0898) Grad: 1847.6019 LR: 0.00003020 \n","Epoch: [3][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0628(0.0888) Grad: 2735.0896 LR: 0.00002936 \n","Epoch: [3][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.0816(0.0905) Grad: 1580.1121 LR: 0.00002852 \n","Epoch: [3][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1241(0.0884) Grad: 7367.0630 LR: 0.00002767 \n","Epoch: [3][140/367] Elapsed 2m 57s (remain 4m 43s) Loss: 0.0766(0.0882) Grad: 1349.2313 LR: 0.00002682 \n","Epoch: [3][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.1070(0.0869) Grad: 3598.0837 LR: 0.00002596 \n","Epoch: [3][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1199(0.0879) Grad: 5533.0073 LR: 0.00002511 \n","Epoch: [3][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0811(0.0884) Grad: 2462.4158 LR: 0.00002425 \n","Epoch: [3][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0906(0.0872) Grad: 1368.4474 LR: 0.00002340 \n","Epoch: [3][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0927(0.0867) Grad: 1809.5238 LR: 0.00002254 \n","Epoch: [3][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0551(0.0867) Grad: 1242.4088 LR: 0.00002169 \n","Epoch: [3][280/367] Elapsed 5m 52s (remain 1m 48s) Loss: 0.0763(0.0865) Grad: 1715.9059 LR: 0.00002085 \n","Epoch: [3][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0967(0.0867) Grad: 2077.0557 LR: 0.00002000 \n","Epoch: [3][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0670(0.0865) Grad: 1307.3369 LR: 0.00001917 \n","Epoch: [3][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0911(0.0864) Grad: 1986.3298 LR: 0.00001834 \n","Epoch: [3][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0727(0.0859) Grad: 1644.6357 LR: 0.00001752 \n","Epoch: [3][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.1407(0.0861) Grad: 2688.4109 LR: 0.00001727 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 43s) Loss: 0.1427(0.1427) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1038(0.1115) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0998(0.1101) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1017(0.1107) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1638(0.1108) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 3 - avg_train_loss: 0.0861  avg_val_loss: 0.1108  time: 487s\n","Epoch 3 - avg_train_loss: 0.0861  avg_val_loss: 0.1108  time: 487s\n","Epoch 3 - avg_train_loss: 0.0861  avg_val_loss: 0.1108  time: 487s\n","Epoch 3 - avg_train_loss: 0.0861  avg_val_loss: 0.1108  time: 487s\n","Epoch 3 - Score: 0.4723  Scores: [0.4958185443119025, 0.4520169708557212, 0.4550777953215156, 0.4682532388181717, 0.49323624433462177, 0.4691238080721707]\n","Epoch 3 - Score: 0.4723  Scores: [0.4958185443119025, 0.4520169708557212, 0.4550777953215156, 0.4682532388181717, 0.49323624433462177, 0.4691238080721707]\n","Epoch 3 - Score: 0.4723  Scores: [0.4958185443119025, 0.4520169708557212, 0.4550777953215156, 0.4682532388181717, 0.49323624433462177, 0.4691238080721707]\n","Epoch 3 - Score: 0.4723  Scores: [0.4958185443119025, 0.4520169708557212, 0.4550777953215156, 0.4682532388181717, 0.49323624433462177, 0.4691238080721707]\n","Epoch 3 - Save Best Score: 0.4723 Model\n","Epoch 3 - Save Best Score: 0.4723 Model\n","Epoch 3 - Save Best Score: 0.4723 Model\n","Epoch 3 - Save Best Score: 0.4723 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [4][0/367] Elapsed 0m 1s (remain 9m 15s) Loss: 0.0757(0.0757) Grad: 3175.9509 LR: 0.00001723 \n","Epoch: [4][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.0582(0.0751) Grad: 1952.5800 LR: 0.00001642 \n","Epoch: [4][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0660(0.0750) Grad: 3813.7834 LR: 0.00001563 \n","Epoch: [4][60/367] Elapsed 1m 17s (remain 6m 26s) Loss: 0.0691(0.0728) Grad: 3282.1128 LR: 0.00001484 \n","Epoch: [4][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0576(0.0719) Grad: 1963.8995 LR: 0.00001406 \n","Epoch: [4][100/367] Elapsed 2m 6s (remain 5m 34s) Loss: 0.0742(0.0726) Grad: 2540.3086 LR: 0.00001330 \n","Epoch: [4][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0810(0.0720) Grad: 3856.0464 LR: 0.00001255 \n","Epoch: [4][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0838(0.0718) Grad: 2207.4475 LR: 0.00001181 \n","Epoch: [4][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.0679(0.0720) Grad: 2609.5972 LR: 0.00001110 \n","Epoch: [4][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0957(0.0724) Grad: 3068.9607 LR: 0.00001039 \n","Epoch: [4][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0692(0.0722) Grad: 2606.8181 LR: 0.00000971 \n","Epoch: [4][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0610(0.0725) Grad: 4331.1401 LR: 0.00000904 \n","Epoch: [4][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0624(0.0728) Grad: 2141.3560 LR: 0.00000839 \n","Epoch: [4][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0685(0.0724) Grad: 2285.6011 LR: 0.00000776 \n","Epoch: [4][280/367] Elapsed 5m 52s (remain 1m 48s) Loss: 0.0727(0.0718) Grad: 2932.5134 LR: 0.00000715 \n","Epoch: [4][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0770(0.0719) Grad: 2494.3198 LR: 0.00000656 \n","Epoch: [4][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0670(0.0715) Grad: 2457.8169 LR: 0.00000599 \n","Epoch: [4][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0932(0.0713) Grad: 3431.4617 LR: 0.00000545 \n","Epoch: [4][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0703(0.0711) Grad: 2386.6025 LR: 0.00000493 \n","Epoch: [4][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0567(0.0710) Grad: 3188.9622 LR: 0.00000477 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1350(0.1350) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.0896(0.1089) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0979(0.1063) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0952(0.1073) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0987(0.1072) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 4 - avg_train_loss: 0.0710  avg_val_loss: 0.1072  time: 487s\n","Epoch 4 - avg_train_loss: 0.0710  avg_val_loss: 0.1072  time: 487s\n","Epoch 4 - avg_train_loss: 0.0710  avg_val_loss: 0.1072  time: 487s\n","Epoch 4 - avg_train_loss: 0.0710  avg_val_loss: 0.1072  time: 487s\n","Epoch 4 - Score: 0.4642  Scores: [0.4900256124570569, 0.4516035060899067, 0.42579486936249916, 0.4714237492899566, 0.48891575826933875, 0.4573834701668737]\n","Epoch 4 - Score: 0.4642  Scores: [0.4900256124570569, 0.4516035060899067, 0.42579486936249916, 0.4714237492899566, 0.48891575826933875, 0.4573834701668737]\n","Epoch 4 - Score: 0.4642  Scores: [0.4900256124570569, 0.4516035060899067, 0.42579486936249916, 0.4714237492899566, 0.48891575826933875, 0.4573834701668737]\n","Epoch 4 - Score: 0.4642  Scores: [0.4900256124570569, 0.4516035060899067, 0.42579486936249916, 0.4714237492899566, 0.48891575826933875, 0.4573834701668737]\n","Epoch 4 - Save Best Score: 0.4642 Model\n","Epoch 4 - Save Best Score: 0.4642 Model\n","Epoch 4 - Save Best Score: 0.4642 Model\n","Epoch 4 - Save Best Score: 0.4642 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [5][0/367] Elapsed 0m 1s (remain 9m 24s) Loss: 0.0681(0.0681) Grad: 2165.2212 LR: 0.00000475 \n","Epoch: [5][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.0728(0.0651) Grad: 1780.0474 LR: 0.00000426 \n","Epoch: [5][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0630(0.0657) Grad: 2276.5977 LR: 0.00000379 \n","Epoch: [5][60/367] Elapsed 1m 17s (remain 6m 26s) Loss: 0.0435(0.0639) Grad: 1368.2422 LR: 0.00000335 \n","Epoch: [5][80/367] Elapsed 1m 42s (remain 6m 1s) Loss: 0.0540(0.0642) Grad: 2448.6121 LR: 0.00000294 \n","Epoch: [5][100/367] Elapsed 2m 7s (remain 5m 35s) Loss: 0.0437(0.0629) Grad: 1276.9863 LR: 0.00000255 \n","Epoch: [5][120/367] Elapsed 2m 32s (remain 5m 10s) Loss: 0.0633(0.0628) Grad: 2541.2380 LR: 0.00000218 \n","Epoch: [5][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0608(0.0627) Grad: 1817.9122 LR: 0.00000185 \n","Epoch: [5][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.0730(0.0627) Grad: 3189.9553 LR: 0.00000154 \n","Epoch: [5][180/367] Elapsed 3m 48s (remain 3m 54s) Loss: 0.0879(0.0634) Grad: 2766.2048 LR: 0.00000126 \n","Epoch: [5][200/367] Elapsed 4m 13s (remain 3m 29s) Loss: 0.0645(0.0631) Grad: 2412.7432 LR: 0.00000100 \n","Epoch: [5][220/367] Elapsed 4m 38s (remain 3m 3s) Loss: 0.0613(0.0630) Grad: 2181.1086 LR: 0.00000078 \n","Epoch: [5][240/367] Elapsed 5m 3s (remain 2m 38s) Loss: 0.0749(0.0631) Grad: 2650.1165 LR: 0.00000058 \n","Epoch: [5][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0709(0.0629) Grad: 4095.4866 LR: 0.00000041 \n","Epoch: [5][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0631(0.0628) Grad: 1905.5002 LR: 0.00000027 \n","Epoch: [5][300/367] Elapsed 6m 18s (remain 1m 23s) Loss: 0.0796(0.0628) Grad: 3191.3237 LR: 0.00000016 \n","Epoch: [5][320/367] Elapsed 6m 44s (remain 0m 57s) Loss: 0.0526(0.0629) Grad: 2432.1865 LR: 0.00000008 \n","Epoch: [5][340/367] Elapsed 7m 9s (remain 0m 32s) Loss: 0.0526(0.0627) Grad: 1858.2936 LR: 0.00000002 \n","Epoch: [5][360/367] Elapsed 7m 34s (remain 0m 7s) Loss: 0.0641(0.0628) Grad: 2517.9346 LR: 0.00000000 \n","Epoch: [5][366/367] Elapsed 7m 41s (remain 0m 0s) Loss: 0.0496(0.0628) Grad: 1802.2869 LR: 0.00000000 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 43s) Loss: 0.1353(0.1353) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.0915(0.1085) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0941(0.1056) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0952(0.1066) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0962(0.1065) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 5 - avg_train_loss: 0.0628  avg_val_loss: 0.1065  time: 488s\n","Epoch 5 - avg_train_loss: 0.0628  avg_val_loss: 0.1065  time: 488s\n","Epoch 5 - avg_train_loss: 0.0628  avg_val_loss: 0.1065  time: 488s\n","Epoch 5 - avg_train_loss: 0.0628  avg_val_loss: 0.1065  time: 488s\n","Epoch 5 - Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Epoch 5 - Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Epoch 5 - Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Epoch 5 - Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Epoch 5 - Save Best Score: 0.4627 Model\n","Epoch 5 - Save Best Score: 0.4627 Model\n","Epoch 5 - Save Best Score: 0.4627 Model\n","Epoch 5 - Save Best Score: 0.4627 Model\n","Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","Score: 0.4627  Scores: [0.48779788895458964, 0.4513173657409464, 0.42401253732617405, 0.4713487549496873, 0.4849442133412205, 0.4567341686309149]\n","========== fold: 3 training ==========\n","========== fold: 3 training ==========\n","========== fold: 3 training ==========\n","========== fold: 3 training ==========\n","Some weights of the model checkpoint at ../input/microsoftdebertav3large/deberta-v3-base were not used when initializing DebertaV2Model: ['mask_predictions.dense.bias', 'lm_predictions.lm_head.dense.weight', 'lm_predictions.lm_head.bias', 'mask_predictions.LayerNorm.weight', 'lm_predictions.lm_head.dense.bias', 'mask_predictions.classifier.weight', 'lm_predictions.lm_head.LayerNorm.bias', 'mask_predictions.LayerNorm.bias', 'mask_predictions.classifier.bias', 'lm_predictions.lm_head.LayerNorm.weight', 'mask_predictions.dense.weight']\n","- This IS expected if you are initializing DebertaV2Model from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing DebertaV2Model from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [1][0/367] Elapsed 0m 1s (remain 9m 9s) Loss: 3.0159(3.0159) Grad: inf LR: 0.00005000 \n","Epoch: [1][20/367] Elapsed 0m 26s (remain 7m 16s) Loss: 0.1432(0.9504) Grad: 4062.9941 LR: 0.00004998 \n","Epoch: [1][40/367] Elapsed 0m 51s (remain 6m 49s) Loss: 0.1312(0.5791) Grad: 1393.9924 LR: 0.00004994 \n","Epoch: [1][60/367] Elapsed 1m 16s (remain 6m 23s) Loss: 0.1366(0.4461) Grad: 1440.4368 LR: 0.00004986 \n","Epoch: [1][80/367] Elapsed 1m 41s (remain 5m 58s) Loss: 0.1057(0.3736) Grad: 1742.2809 LR: 0.00004976 \n","Epoch: [1][100/367] Elapsed 2m 6s (remain 5m 33s) Loss: 0.2047(0.3286) Grad: 1894.4371 LR: 0.00004963 \n","Epoch: [1][120/367] Elapsed 2m 31s (remain 5m 8s) Loss: 0.1613(0.2976) Grad: 1193.7772 LR: 0.00004947 \n","Epoch: [1][140/367] Elapsed 2m 56s (remain 4m 43s) Loss: 0.1207(0.2750) Grad: 949.6708 LR: 0.00004928 \n","Epoch: [1][160/367] Elapsed 3m 21s (remain 4m 18s) Loss: 0.1185(0.2563) Grad: 818.5942 LR: 0.00004906 \n","Epoch: [1][180/367] Elapsed 3m 46s (remain 3m 53s) Loss: 0.1589(0.2437) Grad: 3366.8691 LR: 0.00004881 \n","Epoch: [1][200/367] Elapsed 4m 11s (remain 3m 28s) Loss: 0.0686(0.2307) Grad: 1153.1837 LR: 0.00004853 \n","Epoch: [1][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1546(0.2211) Grad: 947.6586 LR: 0.00004823 \n","Epoch: [1][240/367] Elapsed 5m 2s (remain 2m 37s) Loss: 0.1862(0.2140) Grad: 1046.6226 LR: 0.00004790 \n","Epoch: [1][260/367] Elapsed 5m 27s (remain 2m 12s) Loss: 0.0836(0.2074) Grad: 1810.3362 LR: 0.00004755 \n","Epoch: [1][280/367] Elapsed 5m 52s (remain 1m 47s) Loss: 0.1346(0.2033) Grad: 2618.6392 LR: 0.00004716 \n","Epoch: [1][300/367] Elapsed 6m 17s (remain 1m 22s) Loss: 0.0978(0.1982) Grad: 1158.8110 LR: 0.00004675 \n","Epoch: [1][320/367] Elapsed 6m 42s (remain 0m 57s) Loss: 0.1028(0.1933) Grad: 1764.2072 LR: 0.00004632 \n","Epoch: [1][340/367] Elapsed 7m 7s (remain 0m 32s) Loss: 0.1288(0.1899) Grad: 2181.7747 LR: 0.00004586 \n","Epoch: [1][360/367] Elapsed 7m 32s (remain 0m 7s) Loss: 0.1727(0.1870) Grad: 2281.1409 LR: 0.00004538 \n","Epoch: [1][366/367] Elapsed 7m 39s (remain 0m 0s) Loss: 0.0820(0.1859) Grad: 945.4408 LR: 0.00004523 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0979(0.0979) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.1039(0.1133) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.0997(0.1168) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0933(0.1170) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0713(0.1169) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 1 - avg_train_loss: 0.1859  avg_val_loss: 0.1169  time: 487s\n","Epoch 1 - avg_train_loss: 0.1859  avg_val_loss: 0.1169  time: 487s\n","Epoch 1 - avg_train_loss: 0.1859  avg_val_loss: 0.1169  time: 487s\n","Epoch 1 - avg_train_loss: 0.1859  avg_val_loss: 0.1169  time: 487s\n","Epoch 1 - Score: 0.4842  Scores: [0.5109506327492187, 0.45263509720341283, 0.44262106945977, 0.45783844258857803, 0.5337941429907276, 0.5072116394816243]\n","Epoch 1 - Score: 0.4842  Scores: [0.5109506327492187, 0.45263509720341283, 0.44262106945977, 0.45783844258857803, 0.5337941429907276, 0.5072116394816243]\n","Epoch 1 - Score: 0.4842  Scores: [0.5109506327492187, 0.45263509720341283, 0.44262106945977, 0.45783844258857803, 0.5337941429907276, 0.5072116394816243]\n","Epoch 1 - Score: 0.4842  Scores: [0.5109506327492187, 0.45263509720341283, 0.44262106945977, 0.45783844258857803, 0.5337941429907276, 0.5072116394816243]\n","Epoch 1 - Save Best Score: 0.4842 Model\n","Epoch 1 - Save Best Score: 0.4842 Model\n","Epoch 1 - Save Best Score: 0.4842 Model\n","Epoch 1 - Save Best Score: 0.4842 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [2][0/367] Elapsed 0m 1s (remain 9m 0s) Loss: 0.1238(0.1238) Grad: 2768.3079 LR: 0.00004520 \n","Epoch: [2][20/367] Elapsed 0m 26s (remain 7m 18s) Loss: 0.1025(0.1169) Grad: 1918.5510 LR: 0.00004468 \n","Epoch: [2][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.1192(0.1176) Grad: 4277.6289 LR: 0.00004414 \n","Epoch: [2][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.1239(0.1149) Grad: 3046.1936 LR: 0.00004358 \n","Epoch: [2][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0741(0.1161) Grad: 1147.1172 LR: 0.00004300 \n","Epoch: [2][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.1311(0.1145) Grad: 2686.3967 LR: 0.00004240 \n","Epoch: [2][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.1260(0.1134) Grad: 1632.6953 LR: 0.00004177 \n","Epoch: [2][140/367] Elapsed 2m 57s (remain 4m 43s) Loss: 0.0832(0.1116) Grad: 2110.3867 LR: 0.00004113 \n","Epoch: [2][160/367] Elapsed 3m 22s (remain 4m 18s) Loss: 0.1184(0.1102) Grad: 2446.9509 LR: 0.00004046 \n","Epoch: [2][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1457(0.1104) Grad: 2076.9009 LR: 0.00003978 \n","Epoch: [2][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0651(0.1101) Grad: 1249.2997 LR: 0.00003908 \n","Epoch: [2][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0666(0.1096) Grad: 1054.2532 LR: 0.00003837 \n","Epoch: [2][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0926(0.1093) Grad: 2692.1350 LR: 0.00003764 \n","Epoch: [2][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.1444(0.1095) Grad: 2459.4041 LR: 0.00003689 \n","Epoch: [2][280/367] Elapsed 5m 52s (remain 1m 47s) Loss: 0.1798(0.1096) Grad: 2354.9209 LR: 0.00003613 \n","Epoch: [2][300/367] Elapsed 6m 17s (remain 1m 22s) Loss: 0.1115(0.1097) Grad: 2226.0491 LR: 0.00003536 \n","Epoch: [2][320/367] Elapsed 6m 42s (remain 0m 57s) Loss: 0.1381(0.1100) Grad: 2023.0608 LR: 0.00003457 \n","Epoch: [2][340/367] Elapsed 7m 7s (remain 0m 32s) Loss: 0.0899(0.1094) Grad: 2084.9163 LR: 0.00003378 \n","Epoch: [2][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0794(0.1087) Grad: 1281.7657 LR: 0.00003297 \n","Epoch: [2][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.1300(0.1092) Grad: 3389.6453 LR: 0.00003273 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.1133(0.1133) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.1082(0.1191) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1041(0.1209) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0955(0.1203) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.1137(0.1202) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 2 - avg_train_loss: 0.1092  avg_val_loss: 0.1202  time: 487s\n","Epoch 2 - avg_train_loss: 0.1092  avg_val_loss: 0.1202  time: 487s\n","Epoch 2 - avg_train_loss: 0.1092  avg_val_loss: 0.1202  time: 487s\n","Epoch 2 - avg_train_loss: 0.1092  avg_val_loss: 0.1202  time: 487s\n","Epoch 2 - Score: 0.4919  Scores: [0.5217703003345189, 0.48668507012499357, 0.46546123192592914, 0.4811627677969296, 0.5209459607128946, 0.47560662003513415]\n","Epoch 2 - Score: 0.4919  Scores: [0.5217703003345189, 0.48668507012499357, 0.46546123192592914, 0.4811627677969296, 0.5209459607128946, 0.47560662003513415]\n","Epoch 2 - Score: 0.4919  Scores: [0.5217703003345189, 0.48668507012499357, 0.46546123192592914, 0.4811627677969296, 0.5209459607128946, 0.47560662003513415]\n","Epoch 2 - Score: 0.4919  Scores: [0.5217703003345189, 0.48668507012499357, 0.46546123192592914, 0.4811627677969296, 0.5209459607128946, 0.47560662003513415]\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [3][0/367] Elapsed 0m 1s (remain 9m 35s) Loss: 0.0881(0.0881) Grad: 1714.4194 LR: 0.00003268 \n","Epoch: [3][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.0667(0.1035) Grad: 1947.5427 LR: 0.00003187 \n","Epoch: [3][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.1026(0.0985) Grad: 2668.6272 LR: 0.00003104 \n","Epoch: [3][60/367] Elapsed 1m 16s (remain 6m 25s) Loss: 0.1330(0.0989) Grad: 2559.9270 LR: 0.00003020 \n","Epoch: [3][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.1190(0.0993) Grad: 2809.2805 LR: 0.00002936 \n","Epoch: [3][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.1067(0.0982) Grad: 1960.1483 LR: 0.00002852 \n","Epoch: [3][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0802(0.0991) Grad: 1155.9456 LR: 0.00002767 \n","Epoch: [3][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.1116(0.0987) Grad: 4730.0244 LR: 0.00002682 \n","Epoch: [3][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.1044(0.0982) Grad: 1910.2217 LR: 0.00002596 \n","Epoch: [3][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.0825(0.0968) Grad: 1441.0920 LR: 0.00002511 \n","Epoch: [3][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.1469(0.0972) Grad: 2128.8298 LR: 0.00002425 \n","Epoch: [3][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1176(0.0975) Grad: 1054.0321 LR: 0.00002340 \n","Epoch: [3][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0859(0.0973) Grad: 1561.1821 LR: 0.00002254 \n","Epoch: [3][260/367] Elapsed 5m 28s (remain 2m 13s) Loss: 0.0637(0.0966) Grad: 1130.2197 LR: 0.00002169 \n","Epoch: [3][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0798(0.0959) Grad: 2469.3604 LR: 0.00002085 \n","Epoch: [3][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.1216(0.0961) Grad: 1930.3066 LR: 0.00002000 \n","Epoch: [3][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0826(0.0960) Grad: 1565.3320 LR: 0.00001917 \n","Epoch: [3][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.1339(0.0964) Grad: 2162.5703 LR: 0.00001834 \n","Epoch: [3][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0780(0.0959) Grad: 2072.3853 LR: 0.00001752 \n","Epoch: [3][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.1037(0.0960) Grad: 4525.4111 LR: 0.00001727 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0842(0.0842) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0806(0.1012) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1127(0.1025) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0791(0.1042) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0684(0.1041) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 3 - avg_train_loss: 0.0960  avg_val_loss: 0.1041  time: 488s\n","Epoch 3 - avg_train_loss: 0.0960  avg_val_loss: 0.1041  time: 488s\n","Epoch 3 - avg_train_loss: 0.0960  avg_val_loss: 0.1041  time: 488s\n","Epoch 3 - avg_train_loss: 0.0960  avg_val_loss: 0.1041  time: 488s\n","Epoch 3 - Score: 0.4570  Scores: [0.4914993750964652, 0.4512772948644153, 0.4161022994385176, 0.45643981744110734, 0.4880435082185222, 0.4386279695834293]\n","Epoch 3 - Score: 0.4570  Scores: [0.4914993750964652, 0.4512772948644153, 0.4161022994385176, 0.45643981744110734, 0.4880435082185222, 0.4386279695834293]\n","Epoch 3 - Score: 0.4570  Scores: [0.4914993750964652, 0.4512772948644153, 0.4161022994385176, 0.45643981744110734, 0.4880435082185222, 0.4386279695834293]\n","Epoch 3 - Score: 0.4570  Scores: [0.4914993750964652, 0.4512772948644153, 0.4161022994385176, 0.45643981744110734, 0.4880435082185222, 0.4386279695834293]\n","Epoch 3 - Save Best Score: 0.4570 Model\n","Epoch 3 - Save Best Score: 0.4570 Model\n","Epoch 3 - Save Best Score: 0.4570 Model\n","Epoch 3 - Save Best Score: 0.4570 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [4][0/367] Elapsed 0m 1s (remain 9m 7s) Loss: 0.1050(0.1050) Grad: 2297.1445 LR: 0.00001723 \n","Epoch: [4][20/367] Elapsed 0m 26s (remain 7m 18s) Loss: 0.1422(0.0908) Grad: 2069.3987 LR: 0.00001642 \n","Epoch: [4][40/367] Elapsed 0m 51s (remain 6m 51s) Loss: 0.0871(0.0880) Grad: 1302.4021 LR: 0.00001563 \n","Epoch: [4][60/367] Elapsed 1m 16s (remain 6m 24s) Loss: 0.0642(0.0853) Grad: 1129.1477 LR: 0.00001484 \n","Epoch: [4][80/367] Elapsed 1m 41s (remain 5m 59s) Loss: 0.0761(0.0843) Grad: 1787.4565 LR: 0.00001406 \n","Epoch: [4][100/367] Elapsed 2m 7s (remain 5m 34s) Loss: 0.0838(0.0827) Grad: 2636.1328 LR: 0.00001330 \n","Epoch: [4][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0804(0.0832) Grad: 1397.5065 LR: 0.00001255 \n","Epoch: [4][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0951(0.0822) Grad: 1030.0522 LR: 0.00001181 \n","Epoch: [4][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.1230(0.0822) Grad: 3008.2063 LR: 0.00001110 \n","Epoch: [4][180/367] Elapsed 3m 47s (remain 3m 53s) Loss: 0.1469(0.0822) Grad: 1655.6187 LR: 0.00001039 \n","Epoch: [4][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0646(0.0815) Grad: 1851.7360 LR: 0.00000971 \n","Epoch: [4][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.0717(0.0816) Grad: 1591.7344 LR: 0.00000904 \n","Epoch: [4][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.1138(0.0816) Grad: 2251.2310 LR: 0.00000839 \n","Epoch: [4][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0990(0.0815) Grad: 2075.5791 LR: 0.00000776 \n","Epoch: [4][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0848(0.0817) Grad: 1833.0110 LR: 0.00000715 \n","Epoch: [4][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.1098(0.0816) Grad: 3916.7871 LR: 0.00000656 \n","Epoch: [4][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.1075(0.0815) Grad: 3538.0164 LR: 0.00000599 \n","Epoch: [4][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0831(0.0817) Grad: 1423.3051 LR: 0.00000545 \n","Epoch: [4][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0696(0.0820) Grad: 1322.4032 LR: 0.00000493 \n","Epoch: [4][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0644(0.0820) Grad: 1787.4462 LR: 0.00000477 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0904(0.0904) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 18s) Loss: 0.0741(0.1001) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1085(0.1015) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0798(0.1035) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0630(0.1034) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 4 - avg_train_loss: 0.0820  avg_val_loss: 0.1034  time: 487s\n","Epoch 4 - avg_train_loss: 0.0820  avg_val_loss: 0.1034  time: 487s\n","Epoch 4 - avg_train_loss: 0.0820  avg_val_loss: 0.1034  time: 487s\n","Epoch 4 - avg_train_loss: 0.0820  avg_val_loss: 0.1034  time: 487s\n","Epoch 4 - Score: 0.4554  Scores: [0.48912070113145645, 0.44960534721665213, 0.4136307330105386, 0.45731406603253616, 0.4805117718645381, 0.4423612014091089]\n","Epoch 4 - Score: 0.4554  Scores: [0.48912070113145645, 0.44960534721665213, 0.4136307330105386, 0.45731406603253616, 0.4805117718645381, 0.4423612014091089]\n","Epoch 4 - Score: 0.4554  Scores: [0.48912070113145645, 0.44960534721665213, 0.4136307330105386, 0.45731406603253616, 0.4805117718645381, 0.4423612014091089]\n","Epoch 4 - Score: 0.4554  Scores: [0.48912070113145645, 0.44960534721665213, 0.4136307330105386, 0.45731406603253616, 0.4805117718645381, 0.4423612014091089]\n","Epoch 4 - Save Best Score: 0.4554 Model\n","Epoch 4 - Save Best Score: 0.4554 Model\n","Epoch 4 - Save Best Score: 0.4554 Model\n","Epoch 4 - Save Best Score: 0.4554 Model\n"]},{"name":"stdout","output_type":"stream","text":["Epoch: [5][0/367] Elapsed 0m 1s (remain 9m 36s) Loss: 0.0776(0.0776) Grad: 3903.4351 LR: 0.00000475 \n","Epoch: [5][20/367] Elapsed 0m 26s (remain 7m 19s) Loss: 0.0841(0.0710) Grad: 5704.8447 LR: 0.00000426 \n","Epoch: [5][40/367] Elapsed 0m 51s (remain 6m 52s) Loss: 0.0920(0.0721) Grad: 5083.9932 LR: 0.00000379 \n","Epoch: [5][60/367] Elapsed 1m 17s (remain 6m 26s) Loss: 0.0675(0.0717) Grad: 2949.4456 LR: 0.00000335 \n","Epoch: [5][80/367] Elapsed 1m 42s (remain 6m 0s) Loss: 0.0992(0.0723) Grad: 5818.0981 LR: 0.00000294 \n","Epoch: [5][100/367] Elapsed 2m 7s (remain 5m 35s) Loss: 0.0603(0.0731) Grad: 1432.5247 LR: 0.00000255 \n","Epoch: [5][120/367] Elapsed 2m 32s (remain 5m 9s) Loss: 0.0619(0.0725) Grad: 934.5243 LR: 0.00000218 \n","Epoch: [5][140/367] Elapsed 2m 57s (remain 4m 44s) Loss: 0.0709(0.0718) Grad: 1569.1471 LR: 0.00000185 \n","Epoch: [5][160/367] Elapsed 3m 22s (remain 4m 19s) Loss: 0.0815(0.0725) Grad: 1545.3223 LR: 0.00000154 \n","Epoch: [5][180/367] Elapsed 3m 47s (remain 3m 54s) Loss: 0.0674(0.0724) Grad: 1879.6360 LR: 0.00000126 \n","Epoch: [5][200/367] Elapsed 4m 12s (remain 3m 28s) Loss: 0.0556(0.0727) Grad: 1469.5936 LR: 0.00000100 \n","Epoch: [5][220/367] Elapsed 4m 37s (remain 3m 3s) Loss: 0.1011(0.0726) Grad: 1714.0343 LR: 0.00000078 \n","Epoch: [5][240/367] Elapsed 5m 2s (remain 2m 38s) Loss: 0.0701(0.0721) Grad: 1262.7606 LR: 0.00000058 \n","Epoch: [5][260/367] Elapsed 5m 27s (remain 2m 13s) Loss: 0.0620(0.0723) Grad: 2052.1494 LR: 0.00000041 \n","Epoch: [5][280/367] Elapsed 5m 53s (remain 1m 48s) Loss: 0.0667(0.0729) Grad: 1205.3599 LR: 0.00000027 \n","Epoch: [5][300/367] Elapsed 6m 18s (remain 1m 22s) Loss: 0.0943(0.0729) Grad: 1711.4326 LR: 0.00000016 \n","Epoch: [5][320/367] Elapsed 6m 43s (remain 0m 57s) Loss: 0.0674(0.0733) Grad: 969.9937 LR: 0.00000008 \n","Epoch: [5][340/367] Elapsed 7m 8s (remain 0m 32s) Loss: 0.0767(0.0733) Grad: 1070.1689 LR: 0.00000002 \n","Epoch: [5][360/367] Elapsed 7m 33s (remain 0m 7s) Loss: 0.0840(0.0731) Grad: 1988.2169 LR: 0.00000000 \n","Epoch: [5][366/367] Elapsed 7m 40s (remain 0m 0s) Loss: 0.0649(0.0732) Grad: 1442.6375 LR: 0.00000000 \n","EVAL: [0/62] Elapsed 0m 0s (remain 0m 41s) Loss: 0.0913(0.0913) \n","EVAL: [20/62] Elapsed 0m 9s (remain 0m 17s) Loss: 0.0674(0.0974) \n","EVAL: [40/62] Elapsed 0m 17s (remain 0m 9s) Loss: 0.1030(0.0988) \n","EVAL: [60/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0769(0.1003) \n","EVAL: [61/62] Elapsed 0m 26s (remain 0m 0s) Loss: 0.0518(0.1002) \n"]},{"name":"stderr","output_type":"stream","text":["Epoch 5 - avg_train_loss: 0.0732  avg_val_loss: 0.1002  time: 487s\n","Epoch 5 - avg_train_loss: 0.0732  avg_val_loss: 0.1002  time: 487s\n","Epoch 5 - avg_train_loss: 0.0732  avg_val_loss: 0.1002  time: 487s\n","Epoch 5 - avg_train_loss: 0.0732  avg_val_loss: 0.1002  time: 487s\n","Epoch 5 - Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Epoch 5 - Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Epoch 5 - Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Epoch 5 - Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Epoch 5 - Save Best Score: 0.4483 Model\n","Epoch 5 - Save Best Score: 0.4483 Model\n","Epoch 5 - Save Best Score: 0.4483 Model\n","Epoch 5 - Save Best Score: 0.4483 Model\n","Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","Score: 0.4483  Scores: [0.4873273944885824, 0.44252109721715116, 0.41294959553422145, 0.4426790452993151, 0.4700668644736158, 0.43452804737874345]\n","========== CV ==========\n","========== CV ==========\n","========== CV ==========\n","========== CV ==========\n","Score: 0.4546  Scores: [0.4852360013827042, 0.4474778210617726, 0.41733817727506584, 0.4568607952154229, 0.4751715316784782, 0.44565993753871413]\n","Score: 0.4546  Scores: [0.4852360013827042, 0.4474778210617726, 0.41733817727506584, 0.4568607952154229, 0.4751715316784782, 0.44565993753871413]\n","Score: 0.4546  Scores: [0.4852360013827042, 0.4474778210617726, 0.41733817727506584, 0.4568607952154229, 0.4751715316784782, 0.44565993753871413]\n","Score: 0.4546  Scores: [0.4852360013827042, 0.4474778210617726, 0.41733817727506584, 0.4568607952154229, 0.4751715316784782, 0.44565993753871413]\n"]}],"source":["if __name__ == '__main__':\n","    \n","    def get_result(oof_df):\n","        labels = oof_df[CFG.target_cols].values\n","        preds = oof_df[[f\"pred_{c}\" for c in CFG.target_cols]].values\n","        score, scores = MCRMSE(labels, preds)\n","        logger.info(f'Score: {score:<.4f}  Scores: {scores}')\n","    \n","    oof_df = pd.DataFrame()\n","    for fold in range(CFG.n_fold):\n","        if fold in CFG.trn_fold:\n","            _oof_df = train_loop(df, fold)\n","            oof_df = pd.concat([oof_df, _oof_df])\n","            get_result(_oof_df)\n","    oof_df = oof_df.reset_index(drop=True)\n","    logger.info(f\"========== CV ==========\")\n","    get_result(oof_df)\n","    oof_df.to_pickle(CFG.OUTPUT_DIR+'oof_df.pkl')\n","        \n","    if CFG.wandb:\n","        wandb.finish()"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["#### 八、推理"]},{"cell_type":"markdown","metadata":{},"source":["定义推理函数"]},{"cell_type":"code","execution_count":74,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T05:58:01.520825Z","iopub.status.busy":"2022-12-14T05:58:01.520441Z","iopub.status.idle":"2022-12-14T05:58:01.530109Z","shell.execute_reply":"2022-12-14T05:58:01.529143Z","shell.execute_reply.started":"2022-12-14T05:58:01.520785Z"},"trusted":true},"outputs":[],"source":["def inference_fn(test_loader, model, device):\n","    preds = []\n","    model.eval()\n","    model.to(device)\n","    tk0 = tqdm(test_loader, total=len(test_loader))\n","    for inputs,label in tk0:\n","        for k, v in inputs.items():\n","            inputs[k] = v.to(device)\n","        with torch.no_grad():\n","            y_preds = model(inputs)\n","        preds.append(y_preds.to('cpu').numpy())\n","    predictions = np.concatenate(preds)\n","    return predictions"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["开始训练"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["predictions = []\n","for fold in CFG.trn_fold:\n","    model = FB3Model(CFG, config_path=CFG.OUTPUT_DIR+'/config.pth', pretrained=False)\n","    state = torch.load(CFG.OUTPUT_DIR +f\"_fold{fold}_best.pth\")\n","    model.load_state_dict(state['model'])\n","    prediction = inference_fn(test_loader, model, CFG.device)\n","    predictions.append(prediction)\n","    del model, state, prediction\n","    gc.collect()\n","    torch.cuda.empty_cache()\n","print(predictions)\n","predictions = np.mean(predictions, axis=0)"]},{"cell_type":"markdown","metadata":{},"source":["提交结果"]},{"cell_type":"code","execution_count":76,"metadata":{"execution":{"iopub.execute_input":"2022-12-14T05:58:49.501011Z","iopub.status.busy":"2022-12-14T05:58:49.497886Z","iopub.status.idle":"2022-12-14T05:58:49.560255Z","shell.execute_reply":"2022-12-14T05:58:49.559338Z","shell.execute_reply.started":"2022-12-14T05:58:49.500958Z"},"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>text_id</th>\n","      <th>cohesion</th>\n","      <th>syntax</th>\n","      <th>vocabulary</th>\n","      <th>phraseology</th>\n","      <th>grammar</th>\n","      <th>conventions</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0000C359D63E</td>\n","      <td>2.881332</td>\n","      <td>2.789506</td>\n","      <td>3.067508</td>\n","      <td>2.937235</td>\n","      <td>2.657324</td>\n","      <td>2.697052</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>000BAD50D026</td>\n","      <td>2.680914</td>\n","      <td>2.523401</td>\n","      <td>2.759608</td>\n","      <td>2.486239</td>\n","      <td>2.188252</td>\n","      <td>2.641503</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>00367BB2546B</td>\n","      <td>3.603865</td>\n","      <td>3.399148</td>\n","      <td>3.608669</td>\n","      <td>3.561721</td>\n","      <td>3.381193</td>\n","      <td>3.263556</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["        text_id  cohesion    syntax  vocabulary  phraseology   grammar  \\\n","0  0000C359D63E  2.881332  2.789506    3.067508     2.937235  2.657324   \n","1  000BAD50D026  2.680914  2.523401    2.759608     2.486239  2.188252   \n","2  00367BB2546B  3.603865  3.399148    3.608669     3.561721  3.381193   \n","\n","   conventions  \n","0     2.697052  \n","1     2.641503  \n","2     3.263556  "]},"metadata":{},"output_type":"display_data"}],"source":["submission = pd.read_csv('../sample_submission.csv')\n","test_df[CFG.target_cols] = predictions.clip(1, 5)\n","submission = submission.drop(columns=CFG.target_cols).merge(test_df[['text_id'] + CFG.target_cols], on='text_id', how='left')\n","display(submission.head())\n","submission[['text_id'] + CFG.target_cols].to_csv('submission.csv', index=False)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["### 改进Sequential顺序模型"]},{"cell_type":"code","execution_count":2,"metadata":{},"outputs":[],"source":["import pandas as pd\n","import numpy as np\n","import os\n","import string\n","import tensorflow as tf\n","import matplotlib.pyplot as plt\n","import nltk\n","from nltk.corpus import stopwords"]},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>text_id</th>\n","      <th>full_text</th>\n","      <th>cohesion</th>\n","      <th>syntax</th>\n","      <th>vocabulary</th>\n","      <th>phraseology</th>\n","      <th>grammar</th>\n","      <th>conventions</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0016926B079C</td>\n","      <td>I think that students would benefit from learn...</td>\n","      <td>3.5</td>\n","      <td>3.5</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>4.0</td>\n","      <td>3.0</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0022683E9EA5</td>\n","      <td>When a problem is a change you have to let it ...</td>\n","      <td>2.5</td>\n","      <td>2.5</td>\n","      <td>3.0</td>\n","      <td>2.0</td>\n","      <td>2.0</td>\n","      <td>2.5</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>00299B378633</td>\n","      <td>Dear, Principal\\n\\nIf u change the school poli...</td>\n","      <td>3.0</td>\n","      <td>3.5</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>2.5</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>003885A45F42</td>\n","      <td>The best time in life is when you become yours...</td>\n","      <td>4.5</td>\n","      <td>4.5</td>\n","      <td>4.5</td>\n","      <td>4.5</td>\n","      <td>4.0</td>\n","      <td>5.0</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>0049B1DF5CCC</td>\n","      <td>Small act of kindness can impact in other peop...</td>\n","      <td>2.5</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>3.0</td>\n","      <td>2.5</td>\n","      <td>2.5</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["        text_id                                          full_text  cohesion  \\\n","0  0016926B079C  I think that students would benefit from learn...       3.5   \n","1  0022683E9EA5  When a problem is a change you have to let it ...       2.5   \n","2  00299B378633  Dear, Principal\\n\\nIf u change the school poli...       3.0   \n","3  003885A45F42  The best time in life is when you become yours...       4.5   \n","4  0049B1DF5CCC  Small act of kindness can impact in other peop...       2.5   \n","\n","   syntax  vocabulary  phraseology  grammar  conventions  \n","0     3.5         3.0          3.0      4.0          3.0  \n","1     2.5         3.0          2.0      2.0          2.5  \n","2     3.5         3.0          3.0      3.0          2.5  \n","3     4.5         4.5          4.5      4.0          5.0  \n","4     3.0         3.0          3.0      2.5          2.5  "]},"execution_count":3,"metadata":{},"output_type":"execute_result"}],"source":["train_dataset = pd.read_csv(\"../train.csv\")\n","train_dataset.head()"]},{"cell_type":"code","execution_count":6,"metadata":{},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>text_id</th>\n","      <th>full_text</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0000C359D63E</td>\n","      <td>when a person has no experience on a job their...</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>000BAD50D026</td>\n","      <td>Do you think students would benefit from being...</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>00367BB2546B</td>\n","      <td>Thomas Jefferson once states that \"it is wonde...</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["        text_id                                          full_text\n","0  0000C359D63E  when a person has no experience on a job their...\n","1  000BAD50D026  Do you think students would benefit from being...\n","2  00367BB2546B  Thomas Jefferson once states that \"it is wonde..."]},"execution_count":6,"metadata":{},"output_type":"execute_result"}],"source":["test_dataset = pd.read_csv(\"../test.csv\")\n","test_dataset.head()"]},{"cell_type":"code","execution_count":4,"metadata":{},"outputs":[],"source":["full_text = train_dataset['full_text']\n","cohesion = train_dataset['cohesion']\n","syntax = train_dataset['syntax']\n","vocabulary = train_dataset['vocabulary']\n","phraseology = train_dataset['phraseology']\n","grammar = train_dataset['grammar']\n","conventions = train_dataset['conventions']"]},{"cell_type":"code","execution_count":7,"metadata":{},"outputs":[],"source":["full_text_test = test_dataset['full_text']"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["导入停用词"]},{"cell_type":"code","execution_count":8,"metadata":{},"outputs":[{"name":"stderr","output_type":"stream","text":["[nltk_data] Error loading stopwords: <urlopen error [Errno 11004]\n","[nltk_data]     getaddrinfo failed>\n"]}],"source":["from nltk.corpus import stopwords\n","nltk.download('stopwords')\n","stop_words = stopwords.words('english')"]},{"cell_type":"code","execution_count":9,"metadata":{},"outputs":[],"source":["def CleanFeatures(sentences):\n","  sentences = sentences.apply(lambda sequence:\n","                                            [ltrs for ltrs in sequence if ltrs not in string.punctuation])\n","  sentences = sentences.apply(lambda wrd: ''.join(wrd))\n","  sentences = sentences.apply(lambda sequence:\n","                                            [word for word in sequence.split() if word not in stop_words])\n","  sentences = sentences.apply(lambda wrd: ' '.join(wrd))\n","  return sentences"]},{"cell_type":"code","execution_count":10,"metadata":{},"outputs":[],"source":["full_text = CleanFeatures(full_text)\n","full_text_test = CleanFeatures(full_text_test)"]},{"cell_type":"code","execution_count":12,"metadata":{},"outputs":[{"data":{"text/plain":["0       I think students would benefit learning homebe...\n","1       When problem change let best matter happening ...\n","2       Dear Principal If u change school policy grade...\n","3       The best time life become I agree greatest acc...\n","4       Small act kindness impact people change people...\n","                              ...                        \n","3906    I believe using cellphones class education us ...\n","3907    Working alone students argue decission proyect...\n","3908    A problem chance best What I think quote cant ...\n","3909    Many people disagree Albert Schweitzers quote ...\n","3910    Do think failure main thing people consist goa...\n","Name: full_text, Length: 3911, dtype: object"]},"execution_count":12,"metadata":{},"output_type":"execute_result"}],"source":["full_text\n"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["Token分词"]},{"cell_type":"code","execution_count":13,"metadata":{},"outputs":[],"source":["from transformers import AutoTokenizer\n","list_words = [len(text.split()) for text in full_text]\n","seq_len = np.max(list_words)"]},{"cell_type":"code","execution_count":14,"metadata":{},"outputs":[{"name":"stderr","output_type":"stream","text":["Downloading: 100%|██████████| 29.0/29.0 [00:00<00:00, 7.25kB/s]\n","e:\\study\\anaconda\\lib\\site-packages\\huggingface_hub\\file_download.py:123: UserWarning: `huggingface_hub` cache-system uses symlinks by default to efficiently store duplicated files but your machine does not support them in C:\\Users\\llixuan\\.cache\\huggingface\\hub. Caching files will still work but in a degraded version that might require more space on your disk. This warning can be disabled by setting the `HF_HUB_DISABLE_SYMLINKS_WARNING` environment variable. For more details, see https://huggingface.co/docs/huggingface_hub/how-to-cache#limitations.\n","To support symlinks on Windows, you either need to activate Developer Mode or to run Python as an administrator. In order to see activate developer mode, see this article: https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development\n","  warnings.warn(message)\n","Downloading: 100%|██████████| 570/570 [00:00<00:00, 191kB/s]\n","Downloading: 100%|██████████| 213k/213k [00:15<00:00, 14.1kB/s] \n","Downloading: 100%|██████████| 436k/436k [00:05<00:00, 83.6kB/s] \n"]}],"source":["tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')"]},{"cell_type":"code","execution_count":15,"metadata":{},"outputs":[],"source":["input_ids = []\n","attention_mask = []\n","input_ids_test = []\n","attention_mask_test = []"]},{"cell_type":"code","execution_count":16,"metadata":{},"outputs":[],"source":["for index, value in enumerate(full_text):\n","  tokens = tokenizer.encode_plus(value, max_length = seq_len,padding = \"max_length\",\n","                                 truncation = True, return_token_type_ids = True,\n","                                 return_attention_mask = True,\n","                                 return_tensors = 'np')\n","  input_ids.append(tokens['input_ids'])\n","  attention_mask.append(tokens['attention_mask'])"]},{"cell_type":"code","execution_count":17,"metadata":{},"outputs":[],"source":["for index, value in enumerate(full_text_test):\n","  tokens = tokenizer.encode_plus(value, max_length = seq_len,padding = \"max_length\",\n","                                 truncation = True, return_token_type_ids = True,\n","                                 return_attention_mask = True,\n","                                 return_tensors = 'np')\n","  input_ids_test.append(tokens['input_ids'])\n","  attention_mask_test.append(tokens['attention_mask'])"]},{"cell_type":"code","execution_count":18,"metadata":{},"outputs":[],"source":["input_ids = np.asarray(input_ids)\n","attention_mask = np.asarray(attention_mask)\n","input_ids_test = np.asarray(input_ids_test)\n","attention_mask_test = np.asarray(attention_mask_test)"]},{"cell_type":"code","execution_count":19,"metadata":{},"outputs":[],"source":["input_ids = np.reshape(input_ids, (input_ids.shape[0], input_ids.shape[2]))\n","attention_mask = np.reshape(attention_mask, (attention_mask.shape[0], attention_mask.shape[2]))\n","input_ids_test = np.reshape(input_ids_test, (input_ids_test.shape[0], input_ids_test.shape[2]))\n","attention_mask_test = np.reshape(attention_mask_test, (attention_mask_test.shape[0], attention_mask_test.shape[2]))"]},{"cell_type":"code","execution_count":20,"metadata":{},"outputs":[],"source":["syntax = np.asarray(syntax)\n","cohesion = np.asarray(cohesion)\n","vocabulary = np.asarray(vocabulary)\n","phraseology = np.asarray(phraseology)\n","grammar = np.asarray(grammar)\n","conventions = np.asarray(conventions)"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["训练Sequential模型"]},{"cell_type":"code","execution_count":21,"metadata":{},"outputs":[{"name":"stderr","output_type":"stream","text":["Downloading: 100%|██████████| 527M/527M [00:53<00:00, 9.86MB/s]   \n","Some layers from the model checkpoint at bert-base-cased were not used when initializing TFBertModel: ['nsp___cls', 'mlm___cls']\n","- This IS expected if you are initializing TFBertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n","- This IS NOT expected if you are initializing TFBertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n","All the layers of TFBertModel were initialized from the model checkpoint at bert-base-cased.\n","If your task is similar to the task the model of the checkpoint was trained on, you can already use TFBertModel for predictions without further training.\n"]}],"source":["from transformers import TFBertModel\n","bert = TFBertModel.from_pretrained('bert-base-cased')"]},{"cell_type":"code","execution_count":24,"metadata":{},"outputs":[],"source":["from tensorflow.keras.layers import LSTM, Lambda\n","from tensorflow.keras.layers import add, maximum, subtract, minimum"]},{"cell_type":"code","execution_count":22,"metadata":{},"outputs":[],"source":["def resnet(inputs, units):\n","  x = tf.keras.layers.LSTM(units,return_sequences = True,)(inputs)\n","  x = tf.keras.layers.BatchNormalization()(x)\n","  return x"]},{"cell_type":"code","execution_count":25,"metadata":{},"outputs":[],"source":["units = 16\n","input_ids_m = tf.keras.layers.Input(shape = (seq_len, ), dtype = 'int32')\n","attention_mask_n = tf.keras.layers.Input(shape = (seq_len, ),  dtype = 'int32')\n","bert_m = bert(input_ids_m, attention_mask = attention_mask_n)[0]\n","x = resnet(bert_m, units)\n","for stack in range(1):\n","  for block in range(3):\n","    y = resnet(x, units)\n","    if stack > 0 and block == 0:\n","      x = tf.keras.layers.LSTM(units, return_sequences = True, dropout=0.2, recurrent_dropout=0.2)(x)\n","    x = minimum([x, y])\n","\n","  units *=2\n","x1 = tf.keras.layers.GlobalAveragePooling1D()(x)\n","x2 = tf.keras.layers.GlobalMaxPooling1D()(x)\n","x = tf.keras.layers.concatenate([x1, x2], name=\"our_param\")\n","y = tf.keras.layers.Dense(1)(x)\n","m = tf.keras.models.Model(inputs = [input_ids_m, attention_mask_n], outputs = [y])  "]},{"cell_type":"code","execution_count":26,"metadata":{},"outputs":[],"source":["m.layers[2].trainable = False"]},{"cell_type":"code","execution_count":27,"metadata":{},"outputs":[{"data":{"image/png":"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axRzAQAAAKAfO3HihJYsWaK5c+cqLy9PW7duVXJyst2xEMWuvvpq7dq1SxMnTlRGRoZqamrsjgQAAAAAcWug3QEAAAAAAOFx+PBhZWVl6a233lJ1dbWysrLsjoQYccEFF+i5557TihUrNHv2bL377rtavny53bEAAAAAIO5QzAUAAACAfujVV19Vdna2zj//fNXX1+uaa66xOxJijGEYWr58uYYOHap7771XTU1NeuKJJzRo0CC7owEAAABA3GCaZQAAAADoZ8rKypSRkaHx48dr165dFHLRJ/Pnz9fmzZv13//935o2bZpaWlrsjgQAAAAAcYNiLgAAAAD0E8eOHdNdd92le++9V0uXLtVzzz2nxMREu2OhH7j55pv16quv6k9/+pMmT56sDz74wO5IAAAAABAXDMuyLLtDAAAAAAD65v3339fMmTN16NAhPfvss7r55pvtjoR+6ODBgzJNU3/961/10ksv6etf/7rdkQAAAACgP3MyMhcAAAAAYtwLL7ygCRMmaMCAAdq9ezeFXITN5ZdfrldeeUVjxozRTTfdpN27d9sdCQAAAAD6NYq5AAAAABCjLMvSmjVrZJqmvvvd7+rVV1/VFVdcYXcs9HPnn3++XnjhBd14443KyMhQXV2d3ZEAAAAAoN+imAsAAAAAMegf//iHbrvtNi1btkyPPPKIKioqdO6559odC3Fi8ODBqqmp0S233CLTNPXSSy/ZHQkAAAAA+iWKuQAAAAAQYzwej6677jrt3r1bL7/8shYuXGh3JMShs88+W9XV1crKypJpmnruuefsjgQAAAAA/Q7FXAAAAACIIZWVlZo8ebKGDh2qPXv2KC0tze5IiGMDBgzQb37zG82fP1/Z2dlyOp12RwIAAACAfmWg3QEAAAAAAGd24sQJFRYWas2aNVqwYIEef/xxDRo0yO5YgAzD0Nq1a3XWWWcpNzdXx48f15w5c+yOBQAAAAD9AsVcAAAAAIhyf//735WTk6Pdu3erqqpKOTk5dkcC2jAMQ4899pgGDx6sH/DKk6MAACAASURBVPzgBxoyZIhmzpxpdywAAAAAiHkUcwEAAAAgir322mvKysrS+eefr/r6el1zzTV2RwK69LOf/UynTp1Sbm6ufve73+m73/2u3ZEAAAAAIKaxZi4AAAAARKmysjJlZGTo+uuv165duyjkIiaUlJTojjvuUFZWll5++WW74wAAAABATKOYCwAAAABR5tixY7r77rvlcDi0aNEiPf/880pMTLQ7FhAUwzBUXl6uzMxMzZgxQw0NDXZHAgAAAICYZViWZdkdAgAAAABwWlNTk2bOnKkDBw7o2Wef1S233GJ3JKBXPv/8c91666364x//qJ07d2r48OF2RwIAAACAWONkZC4AAAAARIktW7Zo3LhxOnHihHbv3k0hFzFt0KBB2rRpk770pS/p29/+tv7+97/bHQkAAAAAYg7FXAAAAACwmWVZWrNmjW699VZNmzZNr732mq688kq7YwF9dsEFF2jz5s06ceKEbrvtNh0/ftzuSAAAAAAQUyjmAgAAAICN/vGPf2jmzJkqLCzUqlWr9PTTT+vcc8+1OxYQMpdddpk2b96st956S/fcc4/dcQAAAAAgpgy0OwAAAAAA9Fd///vfdfTo0S7XCn3vvfd02223yefzaceOHUpPT49sQCBCrr76atXU1Oi73/2uxowZo4KCArsjAQAAAEBMYGQuAAAAAITJwoULNWPGDH366acd9lVVVWn8+PG69NJLtWfPHgq56PduueUWPfzww3rggQe0efNmu+MAAAAAQEygmAsAAAAAYfC///u/qqys1Ntvvy2HwxHYfuLECS1ZskS5ubmaM2eOtm3bpssuu8zGpEDk/OhHP9K8efN0xx136M9//rPdcQAAAAAg6hmWZVl2hwAAAACA/uSf//ynrrrqKh0+fFgnT56UYRj65S9/qVmzZik3N1c7d+7Ur371K/3gBz+wOyoQcceOHdM3vvENff7556qvr2eNaAAAAADompNiLgAAAACE2I9+9COtXbtWJ06cCGwbMGCAvvzlL2vw4MH67W9/q2uvvdbGhIC9Ghsbdf3112vatGmqqKiwOw4AAAAARCuKuQAAAAAQSrt371ZaWppOnTrVZvuAAQN03nnn6fXXX9dVV11lUzogerhcLs2YMUNPPvmk7rzzTrvjAAAAAEA0opgLAAAAAKFy4sQJjRs3Tu+9916bUbl+gwYN0rhx4/TKK6/o7LPPtiEhEF0WL16s8vJyNTQ06Morr7Q7DgAAAABEG+dZdicAAAAAgP6ipKRE7777bqeFXEn6/PPP9cYbb+iBBx6IcDIgOq1atUpf/epXNXv2bH3++ed2xwEAAACAqMPIXAAAAAAIgffff19jxozR8ePH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lJSoqqpK5eXldocDAAAAALYjmQsAAAAANvvud7+rvXv3asaMGbruuut055136tixY3aHBcTVo48+qh/96Ef6yU9+onvuucfucAAAAAAgIZDMBQAAAIAEkJWVpe3bt+t3v/udfvvb3+rKK6+Ux+OxOywgLpqamlRUVKTbbrtNGzZssDscAAAAAEgYJHMBAAAAIIHceuutevXVV5WZmanc3Fzdf//9OnXqlN1hAcNm69atWrx4sW677Tb9+te/tjscAAAAAEgoJHMBAAAAIMFceumleuqpp7RmzRr9/Oc/17e//W298847docFxNwDDzygH/3oR1q5cqU2btyos87i1xQAAAAAEIifkgAAAAAgAaWnp+tnP/uZnnvuOb3zzjuaPn26Hn74YbvDAmLm/vvv14oVK1RTU8PSygAAAAAwAJK5AAAAAJDArr76ar3yyitasmSJbr31VhUWFurDDz+0OywgaqdOnVJZWZkqKiq0detWrVixwu6QAAAAACBhGaZpmnYHAQAAAAA4sz/+8Y/60Y9+pPT0dP3ud7/TddddZ3dIQEQOHTqkW265RX/84x/V1NSk+fPn2x0SAAAAACSyVmbmAgAAAECS+Pa3v629e/fqyiuv1Lx583TnnXfq6NGjdocFhOXdd9/Vt771LT3//PN64oknSOQCAAAAQBhI5gIAAABAEvn85z+vP/zhD2pubtZDDz2kK6+8Unv37rU7LGBQe/fuVW5uro4ePar/+Z//0Te+8Q27QwIAAACApEAyFwAAAACSUEFBgV555RWNHz9e11xzjdasWaNTp07ZHRbQz7Zt23Tttdfqq1/9qp577jldeumldocEAAAAAEmDZC4AAAAAJKkvfelLeuqpp/Qf//EfWr9+vb7+9a/rwIEDdocFSJJM09R9992nwsJClZSU6PHHH1dGRobdYQEAAABAUiGZCwAAAABJ7KyzztKdd96pF198UYcOHdKsWbNUV1dnd1gY4T788EM5HA6tXbtWDz74oB544AGlpaXZHRYAAAAAJB2SuQAAAACQAi6//HK98MILKisrU1lZmQoKCvTBBx/YHRZGoJdeeklXXXWVPB6Pnn76aZWWltodEgAAAAAkLZK5AAAAAJAixowZow0bNuiJJ56Q2+3W9OnT9fjjj9sdFkaQuro6zZ07V5deeqlefPFFzZ071+6QAAAAACCpkcwF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CzVr1izt2rWLQi6GZPHixdq2bZv+4z/+Q3PnzlV3d7fdkQAAAABg2KCYCwAAAABp4vDhw/rnf/5n3XnnnVq+fLm2bNmirKwsu2MhDXzjG9/Qc889pz/96U+6+uqr9fbbb9sdCQAAAACGBcOyLMvuEAAAAACAoXn99dd1880368CBA9q0aZO+8Y1v2B0Jaeidd96RaZp677339Lvf/U6XXXaZ3ZEAAAAAIJ15GJkLAAAAACnut7/9ra688kplZGRo9+7dFHIRN+edd56effZZTZ8+Xdddd512795tdyQAAAAASGsUcwEAAAAgRVmWpQcffFCmaeqGG27Qc889py9+8Yt2x0KaGzdunH7729/qmmuuUWFhoZqbm+2OBAAAAABpi2IuAAAAAKSgjz76SDfddJNWrFihhx9+WHV1dRozZozdsTBMjB49Wk1NTfrmN78p0zT1u9/9zu5IAAAAAJCWKOYCAAAAQIppbW3V5Zdfrt27d+v3v/+97r77brsjYRgaNWqUGhsbVVRUJNM0tWXLFrsjAQAAAEDaoZgLAAAAACmkvr5eV199tSZOnKg9e/YoPz/f7kgYxjIyMvTLX/5SixcvVnFxsTwej92RAAAAACCtjLA7AAAAAADg9I4dO6aKigo9+OCDWrJkidatW6eRI0faHQuQYRhau3atzjjjDDmdTh05ckS33nqr3bEAAAAAIC1QzAUAAACAJPfXv/5VJSUl2r17txoaGlRSUmJ3JKAHwzD06KOPavTo0br99tt15pln6uabb7Y7FgAAAACkPIq5AAAAAJDEnn/+eRUVFWncuHFqaWnRJZdcYnckoF8//vGPdeLECTmdTv3Xf/2XbrjhBrsjAQAAAEBKY81cAAAAAEhSGzZsUGFhoa644grt2rWLQi5SQlVVlb7zne+oqKhIv//97+2OAwAAAAApjWIuAAAAACSZw4cP64477pDL5dI999yjJ598UllZWXbHAqJiGIZqa2vlcDg0f/587du3z+5IAAAAAJCyDMuyLLtDAAAAAABO6uzs1M0336w333xTmzZt0je/+U27IwGDcvToUd144416+eWXtXPnTk2aNMnuSAAAAACQajyMzAUAAACAJLF9+3bNnDlTx44d0+7duynkIqWNHDlSmzdv1oQJE/T1r39df/3rX+2OBAAAAAAph2IuAAAAANjMsiw9+OCDuvHG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5s6d2+X777//vm677TZVVlbq9ddf1/Lly3XRRfy4AQAAAAA8gf9dAQAAAIAfi4mJ0a5duxQWFqYJEyZo6dKlzlmWpmlq7ty5+r//+z+9++67ev755y1OC29z8OBB/exnP9PLL7+srVu3tnnv7NmzWrp0qe666y5df/312rVrl6ZMmWJRUgAAAADwT4ZpmqbVIQAAAAAAvcs0Tf3ud7/TY489pttuu035+fnasmWLHn30UeeM3ICAAL399tuKjIy0OC28wcmTJ3XnnXfqwIEDOnfunK677jrt27dPF198sQ4ePKjExETt3LlTS5cu1a9//Wtm4wIAAACA55VRzAUAAACAfqS6ulpz5szRoUOH1NzcrObmZud7AQEBuvbaa7V7925ddtllFqaE1UzTVExMjDZv3qyzZ89KkgIDA/X444/rhhtu0C9+8QuNGDFChYWF+v73v29xWgAAAADwWxRzAQAAAKC/OXnypEaPHq36+nqdOXOmzXtBQUGKjY1VYWGhRengDZ555hk9/fTTHZ6jHBAQIElasmSJnnrqKQUFBVkRDwAAAAD6C4q5AAAAANDfPPnkk3r++eedz87tTEFBgebMmdOHqeAtNm/erOnTp6uzHxcEBQXplltu0QcffCDDMCxIBwAAAAD9CsVcAAAAAOhP3nvvPf3gBz/oMOOyNcMwNHDgQFVXV+vGG2/sw3Sw2r59+3T77bfr66+/7nKMGIah/Px8iv0AAAAA0Pso5gIAAABAf3HixAndcsstOnLkSLfFXOmb56N+//vfV1VVFUvp9hPHjx/XrbfeqqNHj3ZYfrs1wzB0+eWX68CBA7r88sv7MCEAAAAA9DtlF1mdAAAAAADQNz766CNdf/31zueeDhgwoMt9z549q+rqai1durSP0sFK586dU0xMzHkLuZJkmqa+/PJLLVmypI/SAQAAAED/RTEXAAAAAPqJSZMm6c0331RjY6Nef/11LVy4UGPGjJH0zUxcR5HX4dy5c3ruuedUWVlpRVz0oSVLlujNN9/sspAbEBCgwMBASd88N/eOO+7QpZdequbm5r6MCQAAAAD9DsssAwAAAEA/98knn2jr1q167bXXVFlZqa+//loDBw7UqVOnZBiGQkND9de//lVDhgyxOip6wcsvv9zh+bdBQUHOwu4111yjH/7wh5o4caImTJigW2+9tdtZ3QAAAAAA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RTEXAAAAgOedPn1a5eXlysnJUUVFha655holJCRowYIFGjFihNXxAKDHHLN1X375ZZ07d042m03JycmaMmWKDMOwOh4AAAAA/0IxFwAAAIDn7Nu3Ty+99JLWrl2r48ePa/LkyUpOTtb06dMVGBhodTwA8JimpiaVlJQoOztbH374oW666SY98MADmjdvnq688kqr4wEAAADwDxRzAQAAAFyYU6dOyW63O2fhDh06VLNnz9ZDDz2k8PBwq+MBQK9zzNYtKipSc3OzoqOjma0LAAAAwBMo5gIAAADomb/+9a/Kz89Xbm6uTp48qalTpyohIUH33XefAgICrI4HAH3uxIkT2rRpkwoKCrRt2zbdeOONmjdvnh588EGFhoZaHQ8AAACA76GYCwAAAMB1J06cUFFRkfLz8/Xuu+9q5MiR+vnPf06hAgDacfzCy5o1a3TixAn95Cc/UWJiou6//35+4QUAAACAqyjmAgAAADg/xxKiGzZs0JkzZ1hCFABc1NVS9KmpqRo+fLjV8QAAAAB4N4q5AAAAADrX1NSkkpISZWVladeuXbrpppv0wAMPaN68ebryyiutjgcAPmf//v1av3691q1bp2PHjikqKkrJycmaPn26AgMDrY4HAAAAwPuUXWR1AgAAAAC95+DBg3r99dfdOmbnzp1asGCBhg4dqkceeUQ33nijXn/9de3du1ePPfYYhVwA6KFRo0Zp+fLl+uyzz1RcXCxJiouLU3h4uJYsWaJPP/3UrfbWrVun5ubm3ogKAAAAwEswMxcAAADwU1VVVbrvvvt000036b333ut23+PHj6usrEyrVq3Sxx9/rJtvvlmJiYmaP3++hgwZ0keJAaD/OXDggAoLC7Vu3TodOXLEOVt32rRpCgoK6vK4I0eOaPjw4Zo0aZI2b96skJCQPkwNAAAAoI8wMxcAAADwRxs3btSPfvQjNTU1qaqqSvv27euwT0tLi9555x3nLNxf//rXioyM1M6dO7Vnzx499thjFHIBoJfdcMMNWrp0qT799FNt3bpVl19+uWbNmqVhw4bpkUce0Z49ezo9bv369TIMQzt27NCdd96pQ4cO9W1wAAAAAH2CmbkAAACAn3nxxRe1cOFCSZJpmgoKCtKvfvUrZWZmSpI+//xz5eXlKTc3V5988onGjx+v5ORkzZo1S5dccomV0QEA+mbWbWFhobKy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Mk1TbW1t2rhxY7FDAwAAAICZ6MwFAAAAUNpee+01HTp0SP/2b/+m06dPO6N1t2zZoksuuaTY4QEoA2+++aYGBwf17W9/W//1X/+lG264QW1tbWpubtYVV1xR7PAAAAAAYC505gIAAAAoD2fPntVzzz2nQCCgZ555RldccYWampr0zW9+U3/9139d7PAAlJhz585pZGRETzzxhJ5++mktX75c27dv19e+9jV99rOfLXZ4AAAAAOAGnbkAAAAAys/p06f15JNPqre3V6+++qozyu7222/XpZdeWuzwABTR7373Oz3xxBMKBAI6efKk8/1w22236bLLLit2eAAAAACQDTpzAQAAAJQve+RdIBDQs88+q8suu0xbt27V17/+ddXX1xc7PAAFMtd3wTe+8Q195jOfKXZ4AAAAAJArOnMBAAAAVIbf//73OnjwoILBoH79618zGg9YAhilDwAAAKDC0ZkLAAAAoLKwTiZQ2Waun33VVVdp27Ztamtr06c+9alihwcAAAAA+URnLgAAAIDK9eabb2pwcFCPPvqoXnrpJd1www1qaWnRHXfcofe///3FDg9AFv7nf/5HTz75pA4cOKDTp0+roaFBbW1tuuWWW7R8+fJihwcAAAAAi4HOXAAAAABLw7FjxxQIBPTkk0/q3LlzMk1TbW1t2rhxY7FDAzCHd955Rz/4wQ8UCAQ0PDysa665RnfccYfa2tp03XXXFTs8AAAAAFhsdOYCAAAAWFoSiYT6+/vV09OjsbExrVmzRnfeeadaW1t11VVXFTs8AJJOnDihxx9/XAcOHNAbb7zhjMK99dZbtWzZsmKHBwAAAACFQmcuAAAAgKXLHq176NAhvfvuu/J4PGpra9OGDRtkGEaxwwOWlLfeekvRaNQZhXvttdfq9ttvV3t7u1auXFns8AAAAACgGOjMBQAAAIA//vGPikQiCgQCOnbsmFatWqW7775bd911l2pqaoodHlDRXn75ZR08eFB9fX2anp7WzTffrLa2Nn3lK1/RxRdfXOzwAAAAAKCY6MwFAAAAgGTHjx9XKBRSMBjUn/70J23ZsoXRukCe/d///Z9++MMfKhAI6MiRI/r4xz+ue+65R1/96ldVW1tb7PAAAAAAoFTQmQsAAAAA6SRP+XrkyBF96EMf0m233aavf/3rqqurK3Z4QFmypzYPh8N65513mNocAAAAADKjMxcAAAAA5vPKK6/oe9/7nr773e/qzTffdKaBvfXWW7Vs2bJihweUNHsa897eXv3yl7/U6tWrddddd+mee+7R1VdfXezwAAAAAKCU0ZkLAAAAAG69/fbbGhoaUiAQ0PDwsD74wQ+qpaVFXq9XH/nIR7JOz7IsRiOi5OV6n9qjcJ966imdPXtWpmkyChcAAAAAsjN4UbEjAAAAAIBy8Z73vEdNTU366U9/qldeeUUtLS16/PHH9bGPfUxf+tKXNDg4qHfffddVWq+88ooaGxv15z//eZGjBnL3q1/9Srfccovr46enpxUIBFRfX6/Pfe5z+o//+A/5/X6dPn1aAwMD2rhxIx25AAAAAJAFOnMBAAAAIAerVq3SQw89pNdee03PPvus3v/+96u5uVl1dXV64IEH9Otf/zrj+cFgUN///vf1xS9+UfF4vEBRA+6NjIzos5/9rIaGhnT06NGMxx47dkxf+9rXtGLFCnV0dKi+vl4//elPdfz4cf3TP/2TrrzyygJFDQAAAACVhWmWAQAAACBPTp06paeeekqPPfaYTp06pYaGBrW0tKipqUnve9/7nOPefvtt1dbWKpFIaPny5brmmmv005/+VKtXry5i9MAFBw8eVGtrqyzL0kUXXaTbbrtNjz/+eMoxsVhMkUhEwWBQx48f1w033KC2tjbt2LFDl19+eZEiBwAAAICKwpq5AAAAAJBv586d08jIiAKBgJ555hldccUVampq0r333qtPf/rTCofDuu2222T/79iyZcv0vve9T0NDQ/r7v//74gaPJc2yLO3du1f//M//7PwsSZdccolisZj+6q/+yrm3n332WV166aXatm2b2tvbtXbt2mKGDgAAAACViM5cAAAAAFhMr732mg4cOKADBw7otdde00033aTXX39dr7zyis6ePescd9FFF+miiy7SgQNjshaTAAAgAElEQVQH1NLSUsSIsVS98847uueee/TUU09p5quCiy++WJs3b9Z//ud/anJyUn/3d3+nnTt3qrGxMWXUOQAAAAAgr+jMBQAAAIBCOHfunH7yk5/okUce0b//+79nPHbPnj3as2ePDMMoUHRY6t58801t2bJFL7zwQsofGdgMw9Dll1+utrY2tba26hOf+EQRogQAAACAJWfwomJHAAAAAABLwUUXXaRNmzZp7dq1Wr58ecZjOzs7deedd+qdd94pUHRYyn7zm9/o85//vEZHR9N25Ernp1s+c+aMmpub6cgFAAAAgAKiMxcAAAAACuQvf/mLDhw4oHfffTfjcefOnVM4HNaXvvQlTU9PFyg6LEUvvvii/vZv/1avvvrqvPfl8uXLFQgEChQZAAAAAECiMxcAAAAACubZZ5/VG2+84erYv/zlLzp69KhuvPFGvfrqq4sbGJakZ555RjfddJMSicS8HbmS9O677yoUCunMmTMFiA4AAAAAIEmsmQsAAIAl5dSpU3rhhReKHQaWqH/5l3/RSy+9pGXLlkk6P3Wt/Tl37tyc511xxRXavXu3rrvuukKFigr3wx/+UE8++aQyvRK4+OKLJZ2fIty+T8+ePSuv16ubb765UKECKbZu3VrsEAAAAIBCGqQzFwAAAEvKwMCAtm3bVuwwAABADniNBQAAgCVmcFmxIwAAAACKgZfB5a+pqUmSNDg4WORICuedd97RJZdckvV5hmGov7+fEW3QX/7yF1100UW66CJWXZoLvy+liT/GAgAAwFJFZy4AAAAAlIlcOnKBZPYU3wAAAACA8sCf4gIAAAAAAAAAAABACaIzFwAAAAAAAAAAAABKEJ25AAAAAAAAAAAAAFCC6MwFAAAAAAAAAAAAgBJEZy4AAAAAAAAAAAAAlCA6cwEAAAAseX6/X36/v9hhAAAAAAAApKAzFwAAAACKLJFIyDCMYocBAAAAAABKzLJiBwAAAAAAxdbZ2VnU/H/2s58VNX8AAAAAAFCaGJkLAAAAAEWUSCQUDAaLHQYAAAAAAChBdOYCAAAAC5BIJBSJRGQYhgzDUDAYVDwed/bb25On0J25LR6PKxqNyuPxKJFIqL29Pav1W5PPl6RgMCjDMNTe3q6JiYlZ8dr7DcOQ3+934s0Ux3znRSIRJ/9oNOrkPzU1JUlOGSVvKxUz45/rejwejxO72zJ3U/9dXV2KRqMp+yTW8QUAAAAAAEyzDAAAACxIS0uLTNOUZVmKx+NqbW1VNBpVKBRSVVWVYrGYamtrU86ZnJzUypUrnZ/tcyTp5ZdfltfrVW9vr+sYktMfHR3Vzp07tXXrVj3wwANavXq1Tpw4oVWrVkmSHnjgAfX29ioWi+mtt97SypUr9frrr6unpydjHG7PGx8fl2maOnr0qNavXy9JuvPOO7V9+3Z94QtfcK67p6cnq3JeTMnxz/x5dHRUpmk6dbZixQr19PS4LnM39d/Z2al9+/ZJkizLWsxLBQAAAAAAZcaweFsAAACAJWRgYEDbtm3LS6fZyMiINmzYoFgsppqaGknnO/bWr1+vcDis7du3S5Iz0jI5z5nb7J+np6dVVVWVdSzp8hgfH9fatWvV1dWlXbt2STo/2tPuhM0mDrfnZbrGubblqqmpSZI0ODi44LRyuR63ZZ5rWvlkGIb6+/u1devWRUkfqCT8vpSmfD6/AQAAgDIyyDTLAAAAQI7sTkS7I1eS1qxZI0k6dOhQTmnm0pE7l/r6eklSR0eHs62zs1M9PT2amppSd3e36zjcnrfUpStzAAAAAACAXNGZCwAAAOQo3VTIdido8rS9pSYYDOree++VaZoFOQ8AAAAAAAC5Yc1cAAAAIEemaSoajSoej6eMzpUkr9dbpKhmS44lEomora1Nk5OTqqurc51GructVaVU/wAAAAAAoHwxMhcAAADI0Y4dOyRJJ0+edLYlEglJF9ZzLaaJiQlJ0ubNm51tzc3NkpR1h2yu5y016cocAAAAAAAgV3TmAgAAADnatGmTTNPU/v37FY/HJUmHDx+W1+tVQ0ODc5w9StPu6BsdHXX2tbe3O+fmQyQSkXS+UzkUCsk0zZRpke1/T01NOfFIUjwezxiH2/Pszuzkbfa/020rBTPjSnc99n9nHi/NX+bz1b90oXzj8bizJrHf75ff71/g1QEAAAAAgHJGZy4AAACQo6qqKvX19ck0TdXW1sowDEnSQw89lHLct771LZmmqdWrVysajWrdunUyTVPhcFh79+5VbW2tc6zH41lQTGvWrJHH41F1dbXq6uoUCoVS9nd2dko6v/5tdXW1fD6fvF6v3nrrrYxxuD2vurpaklK22f9Ot60UzIwr3fXY/515vDR/mc9X/9KF8v32t7+tlpaW/F4gAAAAAAAoW4ZlWVaxgwAAAAAKZWBgQNu2bVOlNYPtjuRKu65M7KmsBwcHi5J/OZW5YRjq7+/X1q1bix0KUPL4fSlNlfr8BgAAAOYxyMhcAAAAAAAAAAAAAChBdOYCAAAAZa5U16KtZJVe5oZhpHzSSV7fFxd0d3enrLG8UJRzepnK2c39u1ior/Ty/XsBAAAALCV05gIAAAAlamaHxFyfUl2LtpItlTK3LCvtlKbxeFx79uzRZZdd5tyHfr8/bRrp7tlSlUgkNDo6qmAw6Gr96vHxcedY+7o2btyolpaWvHTyU87nZVvOc923i61S6ysej8vv9ztxRiKRWcdMTU2pvb1dhmGovb1dIyMjKfvz+XsBAAAALDV05gIAAAAlyu6QyPaDxbeUyzyRSKi1tVV33nmnvF6vpqenFQ6HtW/fvrQdV5ZlKRaLSZJisVhJl1dXV5d+9KMfqa2tTdFoNOOx3d3d8vv9uuaaa/Too48611VfX6/du3ertbV1QSMRKefzFruc86VS6ysej+vkyZPq7OyUZVkKh8Nqbm5OGX2cSCQ0Pj6unp4eTU9P64tf/KI2bNiQUrelVl8AAABAOTGsUv0/BgAAAGARDAwMaNu2bSX74hzuNTU1SZIGBweLHEnpMwxD/f392rp1q+vjJaX9Penu7tb09LQ6OzvTnhMOh7V9+/a0aZbL712m65ek9vZ2XX311ero6FBVVdWcx1x//fXatWtXTjFQzgsv5/nSzxRXNr8vUuXW1+joqNatW5eybWa5RqNRmaaZ8RjbQn4veH4DAABgiRpkZC4AAAAAwJV4PK6Ojg7dfPPNafd3dXWpubk57TSs6SQSCUUiEWf61mAwOGs94kgk4kzFG41GZRiGPB6PpqamZsXW3d3t7J85zWu+2KMsOzs75+xglM7/sUFHR0dO08pSzoUp53yp5Pqa2ZFrj6r1+XzOtpkduTav1ztrWynUFwAAAFBu6MwFAAAAALjy85//XJJ0/fXXp92/a9cu+Xw+NTc3a3x8fN70WlpadObMGWfK2Wg0mjINa2trq5qbmxWNRjU6OirTNDU5OaloNKoHH3zQSScej6u1tVUrVqyQZVm67777tGHDBlcxZGN8fFz79u3T5s2bFQwGM3aQ2WVkl1k2KOfClHO+LJX6mpqaUldXlxPjXOw4N2/ePGtfKdQXAAAAUG7ozAUAAAAAuPLiiy9Kkurq6uY8pqOjQ6Zpau3atZqYmJjzuJGREUWjUW3ZskWSVFNTo927dysajerw4cOSpKGhIed4e4SgnXdvb++stOxpbBsaGiRJTz/9dNbXmMmRI0ecGHbu3Knp6WmtWLFCGzZs0OjoaMqx9mjSTGUwF8q5MOWcL0uhvqamprRy5Urt27dPkjKudXzs2DGZpqmbbrpp1r5SqC8AAACg3LBmLgAAAJYUe829xsbGYoeCBbI7dWZOA4rZnn766bysmZtpDdLktT/j8bhqa2tlmqb6+vpUU1Mza23Q9vZ29fb2pmxLJBKqrq6WaZpOh1W6PGdu83g8c3Yu5fK/vNlc//j4uNauXSuv16uenh5X6eSav72PcnZXzoVaM3ep1Jd0vh6efvpp7du3T4FAQDt37px1jMfj0e7du+f8bs61XlgzFwAAAEvUIJ25AAAAWFLozK0cdOa6V+jOXOlC55tpmgqFQqqurs7Y8TTXdjedVrl2Ds0l2+tfjM7Euc6jnAtT/ovRmSuVd33ZJiYmtHr16rRpRyIRnTlzJm0n71xxukVnLgAAAJaowWXFjgAAAAAohsHBwWKHgAVqamqSRF26YXeeFFJ9fb2Ghobk8XicdTaTmaapaDSqeDyumpqalH1erzenPCcmJrRq1aqcznXD6/Wqt7dXiUTCmS7WZprmouWbCeVcXiqhvuZKa3x8XMePH1dnZ2fe8gIAAADAmrkAAAAAAJfszqdEIuHqeNM0FQ6HnXU2k+3YsUOSdPLkSWebna7dUe9WIBCQJIVCISeNeDyu7u7urNKZjx3Xq6++6myz87OvZyafz5d1PpRzYco5X5ZafdlphcNhZ1s8HteRI0dSOnLHx8fV3t6eNo1i1hcAAABQbujMBQAAAAC4Yo/Im9lpFY/HU/6bbPv27Wk7bjZt2iTTNLV//37nvMOHD8vr9aqhoWFWenaeyXnb+7ds2SJJ2rdvn6qrq2UYhmpra53Or+7ubhmGofHx8XmvMTn9mdfZ0NAgn88nv9/v5D0wMCDTNLV9+/aUY6empiRJN954o7PNbRyU88LKudAqub48Ho+6u7udck4kEurq6pLP53PqIh6Pq7W1VR0dHTIMw/msXbtWmzdvTkmvFOoLAAAAKDd05gIAAAAAXPn85z8vSfrtb3/rbLM7iCSptrY27ZTOnZ2ds6bHraqqUl9fn0zTTDnvoYceco6x05Wk6urqlP8m76+pqdHk5KTTOeb1ejU5Oam6ujpJ0vT0tLxer/x+f8brMwwjJX27AyzdtSTHHAqFZqVll5FdZtnEQTkvrJwLrZLra+fOnero6NDKlStlGIb6+vr0j//4jykjcPfs2aNoNJr2fHttXVsp1BcAAABQbgzLsqxiBwEAAAAUysDAgLZt2yaaweWPNXPdMwxD/f392rp1q+vjJaX9PbGnaN21a1f+AiwQj8ejoaGhguTl9/tVXV2dtpzcxEE5u5OpnDPdx5lk+/siUV9uZaqv+fD8BgAAwBI1yMhcAAAAAIBrra2tev755zU6OlrsULIyOjqq3bt3FySv8fFxjY+Pq7W1Nec4KOf5ZSrnQqO+5ldK9QUAAACUEzpzAQAAAACu2dPA7t+/39XaqKVgZGREV155pdatW7foeU1MTKi3t1d9fX2qqqrKOQ7KObNM5VwM1FdmpVZfAAAAQDmhMxcAAADIwujoqPx+vwzDkGEY8vv9Gh8fVzweT7smYqlIJBJFia9Y+RbCYl9bKZSdfZ/PVFNTo1AopCNHjhQhquw1NDRo1apVBckrGo1q7969qqmpWXAclPPcMpXzXPftYqO+5papvgAAAABktqzYAQAAAADlwu/36/XXX9f999+vzs5OSVI8HtfPf/5zrV27tsjRZfazn/1sSeVbCIt9bcUsOzdrUlZVVZXl+qCLLd9lQjmnl6lMirmmKvWVHmUCAAAA5I7OXAAAAMAFewTu0NBQyvaamhqZpqmjR49q/fr1RYous0QioWAwuGTyLYTFvrZKLjsAAAAAAOAe0ywDAAAA8xgdHdW+ffu0e/fuOY9Jt+ZgIpFQJBJxpvwMBoOKx+PO/ng8rkgkIo/HI+n8NJSGYcjj8WhqamretGbuDwaDKdM/23l1dXUpGo1Kmj39aDweV3d3t5PvyMhIVrHlO99CmK9e7O3J8c7clu7a4vG4otGoU2Z2ubS3t2tiYmLB6Uvn/6jA7/cvRrEAAAAAAIASRGcuAAAAMI8f/ehHkqTrrrsu43Ezp/ZsaWnRmTNnZFmWYrGYotGoWltblUgkJEmtra1qbm5WNBrV6OioTNPU5OSkotGoHnzwwVlpHT9+XJZlybIs/eIXv0jp1HvggQfU1tamWCymyclJ7du3T3v27JEkZ0poO0Y7zng8rtbWVq1YsUKWZem+++7Thg0bND4+7jq2fOdbCPPVSywWm3XO5ORkys/prq22tlYej8cps507d2p6elqStHr1aqdDN9f0AQAAAADA0mNYvBUAAADAEjIwMKBt27Zl1Tlmj4rM5pyRkRFt2LBBsVhMNTU1ks6P8F2/fr3C4bC2b98+Z9ozt0UiETU3N89Ka//+/c60z/Z6vj09PWnTSJePne7MvH0+nzo7O13Fthj5utXU1CRJGhwcdH1OPuvFzTGSND4+rrVr16qrq8tZNzLX9HNlGIb6+/u1devWBacFVDp+X0pTLs9vAAAAoAIMMjIXAAAAWAR2B6PdYShJa9askSQdOnQoq7Ts45PTWrduXcr6vZ2dnerp6dHU1JS6u7uzSnfmFL/79u1zHVux8s1VPuvFrfr6eklSR0fHoqQPAAAAAAAqF525AAAAwDy8Xq8kOdPwutHb2ztrW1VVlSQ5a6G65fb4YDCoe++9V6ZpZpWuPY1v8icbxco3F/msFwAAAAAAgMVGZy4AAAAwj82bN0uSXn31Vdfn2B2b8Xh81j67czjbtDKtKRuJRNTW1qZHH31Uq1atyip9ey3XXBQr31zls16ytdjpAwAAAACAykNnLgAAADAP0zRlmmbaUZ22mdMM79ixQ5J08uRJZ5s9stde6zWb/KXzo0rtNKamptTe3u4c09zcLEmqq6tznW4gEJAkhUIhJ914PO56uuRi5purfNaLW3antf1HAQAAAAAAAG7RmQsAAAC40NfXp9OnT6u9vX3WiNKpqSnde++9amlpcbZt2rRJpmlq//79zijQw4cPy+v1qqGhQVLq6FC7QzF5Kmd7/5YtW5zO5OrqahmGoQcffFD333+/c6zd4Ts1NZUSn51G8ohUu9N0y5Ytks6vVWunW1tbq6amJtex5TvfxeamXqQLo2jtaxodHXX22Z3o6a7NFolEJJ0vs1Ao5PxBwELT9/v98vv9uRcAAAAAAAAoK3TmAgAAAC7U1NQoFApp8+bNevjhh2UYhgzDkMfj0U9+8hM9+uijqqmpcY6vqqpSX1+fTNNUbW2tDMOQJD300EPOMbW1tc6/q6urU/6bvL+mpkZ9fX3y+XySJJ/Pp/vvvz9lWuPOzk5J59evra6uls/nk9fr1VtvvZWy/9vf/rbT6VxTU6PJyUknXa/Xq8nJSdXV1bmOLd/5LjY39SJJ3/rWt2SaplavXq1oNKp169bJNE2Fw2Ht3bt3zmuzrVmzRh6PR9XV1aqrq1MoFMpr+gAAAAAAYGkwLMuyih0EAAAAUCgDAwPatm2baAaXP3sk7+DgYJEjucDuHC61+8swDPX392vr1q3FDgUoefy+lCae3wAAAFiiBhmZCwAAAAAAAAAAAAAliM5cAAAAAMiD5HWGk/8NAAAAAACQKzpzAQAAACAPktcZTv43AAAAAABArpYVOwAAAAAAqASs4wgAAAAAAPKNkbkAAAAAAAAAAAAAUILozAUAAAAAAAAAAACAEkRnLgAAAAAAAAAAAACUIDpzAQAAAAAAAAAAAKAE/b/27ic07vPOH/j72ybb0i7ryVI0B1PlUmwCCza07DqFtjQO3a2XmdCDLCu7YvegBAlacLAOrZEwQSbpQVoMWbCJdBPUspSThzaXYGguURe6RIdlWR8M0oaCh0I95FI2lPkd3JmfRn9s2ZE0I+n1AqHO9/ud5/l8n68mtfTmeR5hLgAAAAAAAEAPKprNZrPbRQAAwH5ZXFzM4OBgt8sAAJ6CP2MBAHDELD3T7QoAAGA/ffvb386tW7e6XQawBz766KNcu3bNZxwAAIBDw8xcAAAADoXWzHu/5gIAAHBILNkzFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAepAwFwAAAAAAAKAHCXMBAAAAAAAAetAz3S4AAAAAntQf//jH/O53v+s4dv/+/STJvXv3Oo5/8YtfzPPPP79vtQEAAMBuKZrNZrPbRQAAAMCT+MMf/pByuZzPPvvssdeeO3cuv/zlL/ehKgAAANhVS5ZZBgAA4MB57rnn8oMf/CBf+MLjf629cOHCPlQEAAAAu0+YCwAAwIH0z//8z3ncYlNf+tKX8qMf/WifKgIAAIDdJcwFAADgQKpWq/nyl7+87flnnnkm1Wo1f/mXf7mPVQEAAMDuEeYCAABwIH3lK1/Jj370ozz77LNbnv/Tn/6Uf/qnf9rnqgAAAGD3CHMBAAA4sF599dV89tlnW5776le/mn/4h3/Y54oAAABg9whzAQAAOLB+8IMf5NixY5uOP/vssxkcHMyXvvSlLlQFAAAAu0OYCwAAwIH17LPP5sKFC/mLv/iLjuOfffZZXn311S5VBQAAALtDmAsAAMCBNjQ0lP/7v//rOPa1r30t3/ve97pUEQAAAOwOYS4AAAAH2ne+852Uy+X262effTbDw8P54he/2MWqAAAA4PMT5gIAAHCgfeELX8jw8HB7qeXPPvssQ0NDXa4KAAAAPj9hLgAAAAfehQsX2kstf/3rX8+3vvWtLlcEAAAAn58wFwAAgAPvm9/8Zr7xjW8kSf71X/81RVF0uSIAAAD4/J7pdgEAAMDOffTRR/m3f/u3bpcBPam1zPJvfvObDAwMdLka6E1LS0vdLgEAAHgCZuYCAMAB8r//+7957733ul0GXfbee+/lk08+6XYZPae/vz+lUil/9Vd/lST55JNPfF561PLycpaXl7tdxpHi8wAAAAeTmbkAAHAAmVl1tBVFkTfeeCPnz5/vdik954MPPsjLL7+cJFlcXMzg4KDPSw9qzZz2bPZP6/MAAAAcLGbmAgAAcGi0glwAAAA4DIS5AAAAAAAAAD1ImAsAAAAAAADQg4S5AAAAAAAAAD1ImAsAAAAAAADQg4S5AADAvqvX61lYWEi1Wu12KUfa5ORkJicnu10GAAAAsI1nul0AAABw9Fy5ciU3btzodhl0WaPRSKlUSrPZ7HYpAAAA0JOEuQAAwL67fv26MLcHTE1NdbX/Dz/8sKv9AwAAQK+zzDIAAAD7rtFoZHZ2tttlAAAAQE8T5gIAAHuu0WhkYWEhRVGkWq3m7t27W15Xr9czMzPTvu7OnTvt4+v32K3Vau1r1tbWOtpovX92djb1ej1FUeyoj6Nm45juZIzr9XpqtVr7mtnZ2RRFkbGxsY5nWhRF+2u7Y9PT06nVah3nEvv4AgAAwHrCXAAAYM8NDw/n17/+dR48eJDbt2/nP//zPzddU6/XMzIykuPHj6fZbObixYs5e/ZsVlZWMjIykqGhodRqtSwvL6dSqWR1dTW1Wi1vv/12u42ZmZkMDAyk2Wzm/Pnzeeedd3bcx1Gzfkw3vt5ujMvlcqrVavua1157LQ8ePEiSnDx5sh3o3r9/f1N/q6urHa/XL/HcbDbtmwsAAABbKJp+YwYAgANjcXExg4ODByr4as3k/J//+Z+cOHEiycOZuqVSKUna97KwsJChoaGOeyuKIhMTE5mammrP3Nx4fv2xoihy//799PX1JXkY3pbL5R33cVAURZFbt27l/Pnzn7udpHP81r/e6TUrKys5ffp0pqenc+nSpc/V1m46iJ+Xo2JgYCBJsrS01OVKjg6fBwAAOJCWzMwFAAD21K9+9askaQe5SXLs2LFN1/3iF79Isnk53qtXr+64r9HR0ZTL5SwsLKTRaKSvr68juNiNPtjs1KlTSZLx8fEuVwIAAACHizAXAADYUzdu3NjRda3lfltL7q7/2qk33ngjlUolQ0NDKZVKmZmZ2fU+AAAAAPaLMBcAAOgprX1Xn8aJEydy+/btfPzxxxkdHc34+PimQPfz9sH2RkdHu10CAAAAHCrCXAAAYE+9++67SR7uq7qT6+bn59NoNJI83PN2qzB2O0VRpNFo5NSpU7l+/Xo+/vjjjqV/d6MPNmuF4+fOnetyJQAAAHC4CHMBAIA99fd///dJksnJyaytrSVJ7ty50z4/NjaWJHnllVeSPNy/tlQqpSiKlMvlDAwMpF6vt69vhbCt70k6zk9PT7f7ee655zI9Pd0+96g+jpr1Y1av159ojJNkYWGhfc38/HwqlUoqlUr7fGuWbivoXV5ebp9rPfPW9esD9cnJyUxOTn7OuwMAAIDDQZgLAADsqf7+/qyurub48eN5/vnnMzY2lr/5m79JpVLJzZs38+abbyZJ+vr6srq6momJiSQPw8DV1dX09/enXC632yuVSh3fk3Sc/8lPfpKlpaUURZGlpaVcunSpfe5RfRw168esXC4/0RgnyQsvvJBqtZpSqZT+/v7Mz893nP/Zz36WSqWSkydPplar5cyZM5ue+dTUVJLknXfeyfDw8O7eIAAAABwCRbPZbHa7CAAAYGcWFxczODgY/4w/2oqiyK1bt3L+/Pmu9J3kQPwM+rz0rtZs+KWlpS5XcnT4PAAAwIG0ZGYuAAAAAAAAQA8S5gIAALAjG/fZBQAAAPaWMBcAAIAd2bjP7mFXr9czMzPT7TJ6zszMTBqNRldrOIrPphfGHQAA2H/CXAAAAHak2Wx2fB1m9Xo9V65cyVe/+tUURZGiKDI5Obnlta3z6796Vb1ez+TkZLvOhYWFTdesrWyA1R0AAA4iSURBVK1lbGwsRVFkbGwsd+7c6Tj/8ssvZ3h4uGuzsw/rs2k0GlleXs7s7Gyq1eqm890edwAAoDuEuQAAALBOo9HIyMhI/uVf/iWjo6N58OBBbt68matXr24ZGjabzdy/fz9Jcv/+/Z4Nuuv1eu7du5epqak0m83cvHkzQ0NDHTNcG41GVlZWcv369Tx48CDf+973cvbs2dRqtfY1p06dyuXLlzMyMrLvM0UP67NJkunp6fzyl7/M66+/3jHeLd0cdwAAoHuEuQAAALDO3NxcTp06lTNnziRJjh07lgsXLiRJrl69uuVs1r6+vo7vvejevXvte0rSvqfx8fH2sQ8//DCVSiVJ531vnCl65syZHD9+PHNzc3tddofD+mySZGpqKlNTU4+8plvjDgAAdI8wFwAAAP6sXq9nfHw83//+97c8Pz09naGhoS1Dw600Go0sLCy0l/idnZ3tWCa3Xq9nYWGhHZbWarUURZFqtZq1tbVNtc3MzLTPb1z++HHWB7mt2pJkYmKifawV5G40Ojq66djAwEDGx8f3bdnfw/xsnsR+jzsAANBdwlwAAAD4s9/85jdJkm984xtbnr906VImJiYyNDSUlZWVx7Y3PDycTz/9tL3cb61W61gmd2RkJENDQ6nValleXk6lUsnq6mpqtVrefvvtdjv1ej0jIyM5fvx4ms1mLl68mLNnz+6ohq2sra1lenq6XeN2WnWeO3du07nWGLXGbK8dlWfzOPs97gAAQHcJcwEAAODP/uM//iNJ0t/fv+014+PjqVQqOX36dO7evbvtdXfu3EmtVssrr7yS5OEyv5cvX06tVsv777+fJLl9+3b7+tbM2VbfN27c2NRWa0nhl156KUny3nvvPfE9rq2t5fnnn8/Vq1eTZMv9WVt++9vfplKp5Lvf/e6mc8eOHUuSR47BbjoKz2Yn9nvcAQCA7iqazWaz20UAAAA7s7i4mMHBwW6XAQfKk/zaWxTFtu8piqJ9vF6vp1wup1KpZG5uLn19fR3nk2RsbCw3btzoONZoNFIqlVKpVNph4VZ9bjxWrVa3DV2f9tf6lZWVvPfee7l69WrefffdvPbaa5uuqVaruXz58qYlmrerc6cGBgaSJEtLSzt+z1F5NjsZ06cZ99b/f/gzEAAAHChLwlwAADhAWn+Mv3XrVrdL6QkfffRRrl27duTGY3BwMBcvXsyLL77Y7VJ6WuvnYy/C3ORhGHr69OlUKpXMz8+nVCo9MvTb7vhOAsOnDU0f5+7duzl58uSWbS8sLOTTTz/dMuTdrs6d2sswNznYz0aYCwAArLP0TLcrAAAAntz58+e7XULPuHbt2pEbj8HBwbz44otH7r6fxrVr1/as7VOnTuX27dupVqvt/WfXq1QqqdVqqdfr6evr6zg3Ojr6VH3evXs3J06ceKr3bmW7tlZWVvJf//VfmZqa2rW+9tNheDYAAACJPXMBAACgrRX8NRqNHV1fqVRy8+bN9v6z67366qtJknv37rWPtdptzUzdqXfffTdJMj8/326jXq9nZmbmidrZqNXWzZs328fq9Xo++OCDjiB3ZWUlY2NjW7YxMTHxuWrYqaP2bB5nv8YdAADoLmEuAAAA/FlrZuXGwLBer3d8X+/ChQtbBms//OEPU6lU8tZbb7Xf9/7772d0dDQvvfTSpvZafa7vu3X+lVdeSZJcvXo1pVIpRVGkXC63g8eZmZkURZGVlZVt761arWZmZiZra2vtfqanpzMxMZELFy60+xsZGcn4+HiKomh/nT59OufOnetor9XO3/7t327b5246zM9mYz9b3WfLfo87AADQXcJcAAAA+LO/+7u/S5L87ne/ax9rhXNJUi6X2/uVrjc1NZVKpdJx7NixY5mbm0ulUul4389//vP2Na12k6RUKnV8X3++r68vq6ur7WBydHQ0q6ur6e/vT5I8ePAgo6OjmZyc3PbeXnvttYyPj+f5559PURSZm5vLP/7jP3bMwL1y5UpqtdqW72/trdvSGqPWmO21w/xsWveyvv1WMLzRfo87AADQXUWz2Wx2uwgAAGBnFhcXMzg4GP+Mf+iojkdRFLl165Y9cx/jaX8+WsvjXrp0aS/K2lPVajW3b9/el74mJydTKpWeapxas1aXlpae6H2ezdOP+1H97yUAABxwS2bmAgAAwDojIyP59a9/neXl5W6X8kSWl5dz+fLlfelrZWUlKysrGRkZ2Zf+Wo76s+nWuAMAAN0jzAUAAI6Mer2ehYWFVKvV9rHJycnHLn/K0dJagvett97a0T6nveDOnTv567/+65w5c2bP+7p7925u3LiRubm5HDt2bM/7W+8oP5tujjsAANA9wlwAADjEiqLY9mtmZia1Wi2NRqPbZe6bK1euZGhoaNs9QXm8RqOx5T6eB6X9nerr68v8/Hw++OCDbpeyIy+99FJOnDixL33VarW8+eab6evr25f+Njqqz6bb4w4AAHSHMBcAAA6xZrOZ+/fvt18/ePAgzWYzzWYzL7/8cmZnZzM8PJx6vd7FKvfP9evXNx2bmprK1NRUF6o5mD788MMD3f6TOHbs2IHcm3WvXbp0qeuB4lF8Nr0w7gAAwP4T5gIAwCG3/o//65fmPHXqVObm5pI83IfyKM3Q5ek0Go3Mzs4e2PYBAADgoBHmAgDAEdbX15eLFy+mVqttmhFZr9czMzOToihSrVZz586d9vH1+87WarX2NWtrax1ttN4/Ozuber2+afnc7frYLxvv5Unu7VG1t0LJ1pLWk5OT7dnP9Xo9tVot1Wo1jUYjY2Nj+7Jnb6PRyMLCQrum1jNpWb8E93bHpqen20tUt46vv58k7fseGxvL3bt3P3f7iX2NAQAAOLqEuQAAcMR985vfTJL86le/ah+r1+sZGRnJ8ePH02w2c/HixZw9ezYrKysZGRlp7zu7vLycSqWS1dXV1Gq1vP322+02ZmZmMjAwkGazmfPnz+edd97p6PdRfeyX9fey8fWj7u1xtf/0pz/N66+/nvv372d1dTVXr17NlStX2n1Uq9XUarX893//d0ZHR/P73/9+z+91eHg4n376aXvp7Vqt1jEje/1y3C2rq6sdr9cvR91arrtcLrfvZ3l5Oa+99loePHiQJDl58mQ70H3a9gEAAOAoK5p+OwYAgANjcXExg4ODTxxytWY4bve+jecXFhYyNDTUcX1RFJmYmMjU1NSW7W08VhRF7t+/317muV6vp1wu77iPnXia8diqzke93urY42qfnJzM73//+/Yevdv18eDBg46lr5/kHm7dupXz58/v6Po7d+7k7NmzHc9jeXk5L774Ym7evJkLFy7s+N53ck2SrKys5PTp05menm7vbfq07T+tp/28sPcGBgaSJEtLS12u5OjweQAAgANpycxcAABgk1/84hdJNi+De/Xq1R23MTo6mnK5nIWFhTQajfT19XWECLvRR7c8rvapqalcv349a2trmZmZ2badpwlyn0YrMFu/f/ILL7yQ5P/fy247depUkmR8fHxP2gcAAICjQJgLAABHXGuZ3YmJifax1rLDraVu13/t1BtvvJFKpZKhoaGUSqVNoeZu9NEtO6l9dnY2P/7xj1OpVLpVZtuNGzc2HWsFya17AQAAAHqPMBcAAI643/72t0mS73//+5vOtfY7fRonTpzI7du38/HHH2d0dDTj4+NbzlL9PH1023a1Lyws5PXXX8+///u/58SJE/tc1WatQLler286Nzo6uqd973X7AAAAcJgJcwEA4Air1+u5du1aKpVKXnrppfbxd999N0kyPz/fnrlbr9cfuWTwRkVRpNFo5NSpU7l+/Xo+/vjjjiV3d6OPbnlc7UNDQ0mS/v7+7hS4wauvvpokuXfvXvtYq+7W3qW7rRV0nzt3bk/aBwAAgKNAmAsAAIdcK7Tb+L9XVlYyMjKSJJmbm+t4zyuvvJLk4R6wpVIpRVGkXC5nYGCgY3Znq7317a4/Pz09nbW1tSTJc889l+np6R31sVfW11av1x/5+lH39rjaWzNh19bWOmbvbuxjv/zwhz9MpVLJW2+91e7//fffz+joaEeI35pF26p5eXm5fW5sbCxJ5yzfjcH7wsJCkodjNj8/n0ql0rHM9NO2Pzk5mcnJyacfAAAAADighLkAAHCIFUWRUqnUft0KHouiyAcffJDLly/n9u3b6evr63hfX19fVldX2/vojo6OZnV1Nf39/SmXyx3trf+epOP8T37ykywtLaUoiiwtLeXSpUs76mOvrK+tXC4/8vWj7u1xtU9NTSV5uG9uqVTKxMRERkdH88c//rGjj2q1utu3uKVjx45lbm4ulUol5XI5RVEkSX7+8593XPezn/0slUolJ0+eTK1Wy5kzZ1KpVHLz5s28+eabHff2zjvvZHh4uOP9L7zwQqrVakqlUvr7+zM/P7+r7QMAAMBRUzSbzWa3iwAAAHZmcXExg4OD8c/4h47qeBRFkVu3buX8+fPdLiVJ2uFwrz2Ho/rzcRC0ZrEvLS11uZKjw+cBAAAOpCUzcwEAAAAAAAB6kDAXAACAp7Zx32EAAABg9whzAQAAeGob9x0GAAAAds8z3S4AAACAg8v+mwAAALB3zMwFAAAAAAAA6EHCXAAAAAAAAIAeJMwFAAAAAAAA6EHCXAAAAAAAAIAe9Ey3CwAAAJ7c4uJit0voCR999FGSozkerXtne0f556PXffLJJ0k8m/3kvxkAAHAwFc1ms9ntIgAAgJ1ZXFzM4OBgt8sA4IDyZyAAADhQloS5AAAAAAAAAL1nyZ65AAAAAAAAAD1ImAsAAAAAAADQg4S5AAAAAAAAAD1ImAsAAAAAAADQg/4f2I5YtUYN3xsAAAAASUVORK5CYII=","text/plain":["<IPython.core.display.Image object>"]},"execution_count":27,"metadata":{},"output_type":"execute_result"}],"source":["tf.keras.utils.plot_model(m, show_shapes=True, \n","                          show_dtype=False, \n","                          show_layer_names=True, \n","                          expand_nested=True, \n","                          show_layer_activations=True)"]},{"cell_type":"code","execution_count":28,"metadata":{},"outputs":[],"source":["m.compile(loss= \"mse\", optimizer= tf.keras.optimizers.Adam(0.1))"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["训练数据"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["data = [syntax, cohesion, vocabulary, phraseology, grammar, conventions]\n","models = []\n","history = []\n","for s in data:\n","    history_training = m.fit([input_ids, attention_mask],\n","                         y = s,\n","                         batch_size= 128, \n","                         epochs= 6,\n","                         callbacks = [tf.keras.callbacks.ReduceLROnPlateau(monitor='loss', factor=0.1, mode = 'min',patience= 2),\n","                             tf.keras.callbacks.EarlyStopping(patience = 2, monitor = 'loss', mode = 'min', restore_best_weights=True)])\n","    models.append(m)\n","    history.append(history_training)"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["预测数据"]},{"cell_type":"code","execution_count":31,"metadata":{},"outputs":[],"source":["import xgboost as xg"]},{"cell_type":"code","execution_count":32,"metadata":{},"outputs":[],"source":["x_train = [input_ids[:3300], attention_mask[:3300]]\n","x_test = [input_ids[3300:], attention_mask[3300:]]\n","x_sub = [input_ids_test, attention_mask_test]"]},{"cell_type":"code","execution_count":33,"metadata":{},"outputs":[],"source":["from sklearn.metrics import mean_squared_error as MSE\n"]},{"cell_type":"code","execution_count":37,"metadata":{},"outputs":[],"source":["def xgboost_syntax(data, x_train, x_test, x_sub, m):\n","  model = tf.keras.models.Model(\n","    m.input, \n","    m.get_layer('our_param').output\n","  )\n","  data_y_train = data[:3300]\n","  data_y_test = data[3300:]\n","  X_train_features = model.predict(x_train)\n","  X_test_features = model.predict(x_test)\n","  X_sub_features = model.predict(x_sub)\n","  xgb = xg.XGBRegressor(objective ='reg:squarederror',\n","                  n_estimators = 100)\n","  xgb.fit(X_train_features, data_y_train)\n","  y_pred = xgb.predict(X_test_features)\n","  loss_metrics = MSE(data_y_test, y_pred)\n","  return [y_pred, data_y_test, loss_metrics, xgb.predict(X_sub_features)]"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["[y_pred, y_true, loss_metrics, res] = xgboost_syntax(syntax, x_train, x_test, x_sub, models[0])\n","[y_pred, y_true, loss_metrics, res2] = xgboost_syntax(cohesion, x_train, x_test, x_sub, models[1])\n","[y_pred, y_true, loss_metrics, res3] = xgboost_syntax(vocabulary, x_train, x_test, x_sub, models[2])\n","[y_pred, y_true, loss_metrics, res4] = xgboost_syntax(phraseology, x_train, x_test, x_sub, models[3])\n","[y_pred, y_true, loss_metrics, res5] = xgboost_syntax(grammar, x_train, x_test, x_sub, models[4])\n","[y_pred, y_true, loss_metrics, res6] = xgboost_syntax(conventions, x_train, x_test, x_sub, models[5])"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["csv = pd.DataFrame({\n","    \"text_id\": test_dataset['text_id'],\n","    \"cohesion\": res2,\n","    \"syntax\": res,\n","    \"vocabulary\": res3,\n","    \"phraseology\": res4,\n","    \"grammar\": res5,\n","    \"conventions\": res6\n","\n","})\n","csv.head()"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["csv.to_csv(\"submission.csv\")"]}],"metadata":{"kernelspec":{"display_name":"base","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.9.7"},"vscode":{"interpreter":{"hash":"618d854d3ece49025d2e8a2744aa8fe4aa4e4aad5ecf6d52bf8d246deb8fa2ef"}}},"nbformat":4,"nbformat_minor":4}
